- 博客(35)
- 资源 (21)
- 收藏
- 关注
原创 iOS使用Instrument-Time Profiler工具分析和优化性能问题
背景前不久我做了一个富文本编辑工具,编辑器遇到了一个性能问题是添加多张图片,当滚动编辑区域,遇到图片切换的时候会有明显的卡顿现象。这篇文章基于这个卡顿的性能问题进行性能瓶颈的分析以及做对应的优化。可以打开这个链接 iOS使用UITableView实现的富文本编辑器 查看我的文章,这篇文章所用的项目也是基于这个项目的。结果最终的分析优化的结果把时间从90ms的数量级降低到了2ms的数量级,达
2017-10-25 11:18:12
590
原创 iOS使用UITableView实现的富文本编辑器
前言公司最近做一个项目,其中有一个模块是富文本编辑模块,之前没做个类似的功能模块,本来以为这个功能很常见应该会有已经造好的轮子,或许我只要找到轮子,研究下轮子,然后修改打磨轮子,这件事就八九不离十了。不过,还是 too young to simple 了,有些事,还是得自己去面对的,或许这就叫做成长,感觉最近一年,对于编程这件事,更多了一点热爱,我感觉我不配过只会复制粘贴代码的人生,编程需要有挑
2017-10-25 11:18:07
793
原创 iOS模式分析-使用适配器模式重构TableView
本文介绍了适配器模式的定义和概念,以及实际开发中的场景和案例,对应的代码可以在AdapterPatternDemo这里下载到。1. 定义什么是适配器模式?(电源适配器、转接头)特点:将一个原始接口转成客户端需要的接口原始接口不兼容现在新的接口,将它们两个接口一起工作需要适配器解决2. 应用场景接口不兼容(适配器模式)可以重复使用的类,用于与一些彼此之间没有太大关联的一些类一
2017-10-25 11:18:02
882
原创 IOS自动进行View标记
缘起一切都源于我的上一篇博客,我写的是一篇 UITableViewCell使用自动布局的“最佳实践” ,我需要给我的图片里面的UIView元素添加上边距的标记,这让我感到很为难,我觉得我得发点时间写一个程序让这个步骤自动化,我只要一键就能让我的程序自动标记边距,这个比我要手动去标记来的酷很多不是吗!结果所以,我发了点时间实现了我的想法,下面是实现的结果截图:以及代码开源托管地址:代码链接
2017-10-25 11:17:58
313
原创 iOS逆向之五-MACH-O文件解析
MachO文件是苹果可执行二进制文件的格式Load CommandsLC_SEGMENT_64将可执行文件(64位)映射到进程地址空间32位系统的是LC_SEGMENT是加载的主要命令,负责指导内核来设置进程的内存空间LC_DYLD_INFO_ONLY动态链接相关信息LC_SYMTAB符号表地址LC_DYSYMTAB动态符号地址表LC_LOAD_DYLINKER加载一个动
2017-10-25 11:17:51
2794
原创 iOS逆向之三-authorized_keys ssh登录越狱手机免验证设置
iOS逆向之三-authorized_keys ssh登录越狱手机免验证设置默认情况下使用ssh登录到iPhone每次都是需要输入密码的,比较繁琐,可以配置ios的authorized_keys和电脑端的一致来简化这个步骤电脑配置删除 ~/.ssh/known_hosts文件的配置known_hosts 的文件如下➜ .ssh cat known_hosts 192.168.8.2
2017-10-25 11:17:42
985
原创 iOS逆向之四-FishHook的简单使用
iOS逆向之二-FishHook的简单使用FishHook用于hook C函数,是Facebook提供的一个动态修改链接mach-O文件的工具,项目地址:fishhook 。官方例子一个官方的小例子:用于监控某个进程的文件的读写事件,相当于hook C语言的open/close函数,OC底层是使用C语言实现的,所以hook C语言的open/close函数 可以达到监控程序的文件操作情况。
2017-10-25 11:17:38
5725
原创 iOS逆向之二-一个简单的Tweak插件原理解析
iOS逆向之二-一个简单的Tweak插件Tweak插件可以动态的注入到宿主程序中,修改宿主程序的运行流程Tweak插件是使用theos开发的,所以首先要安装theos程序,并且越狱手机中需要安装Cydia Substrate,这篇博客iOS逆向之一-工具的安装和使用有工具安装和使用的详细说明,如果没有安装首先需要安装对应的工具才能继续下面的步骤。创建Tweak插件工程创建(1)、使用th
2017-10-25 11:17:31
4743
原创 iOS逆向之一-工具的安装和使用
iOS逆向之一-工具的安装和使用最近在学习iOS安全方面的技术,有些东西就记录下来了,所有有了这篇文章。顺便也上传了DEMO,可以再这里找到这些DEMO的源码:dhar/iOSReProject越狱手机安装软件ssh 远程连接到越狱手机需要的软件在Cydia中搜索、安装OpenSSH软件。ssh 连接到手机:ssh root@192.168.1.112[手机IP]apt-get 包管
2017-10-25 11:17:27
2459
原创 Cocopods安装和升级备忘录
这是两个多月前写在mac 备忘录上的一个备忘文档,现在分享出来,希望对新手或者需要的人有帮助##cocopods安装###相关概念解释####Homebrew(brew)Homebrew(brew) 是macOS上的包管理器,安装命令行工具,详情介绍可以看下面的网址链接https://github.com/Homebrew/brewhttps://brew.sh/命令行安装brew
2017-10-25 11:17:22
364
原创 iOS模式分析-策略模式
好久了,过去了一个月没有动笔写东西了,除了工作的忙,还有最近在学习一个课程和看一些技术类的书籍,腾不出时间来写博客了,说了这么多,其实归根结底都是我懒的借口,确实挺惭愧,还是得继续加油,多写多练习,做更好的自己。。。策略模式本文使用OC语言实现策略模式的实现定义定义一系列可以相互替换的算法类,提供给客户端相同的调用接口,客户端调用不同的对象的相同方法来达到快速切换算法的目的。使用场景
2017-10-25 11:17:18
542
原创 UML入门
###UML概述####UML简介UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。UML的定义包括UML语义和UML表示法两个部分。UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。UML表示法:UML表示法
2017-10-25 11:17:13
370
原创 UITableViewCell使用自动布局的“最佳实践”
前言iOS 处理TableView的复杂Cell是一件很麻烦的事情,我们得计算Cell里面内容的Frame以及Cell的高度,现在有一种相对高效的方式,使用自动布局的Cell可以让这件事变得容易起来了,不用再去计算里面的Frame和自身的高度,接下来谈论下这种方式的实现以及里面的坑。实战我们实现了一个这样的UITableView:这是一个简单的列表,和其他的列表无异,不过Cell里面的布
2017-10-25 11:17:06
824
原创 IOS 工厂模式的面向协议编程思想
前言OOP开发有个原则是针对抽象编程而不是针对具体编程,实际的软件开发中,因为时间和项目进度等客观不可抵抗和主观的因素,我们偏向使用最简单的的方式去实现功能,而没有考虑到未来可能会有的扩展问题,导致未来发生扩展的时候出现了维护性的灾难,软件模块不好扩展,需求变动就得修改模块,这就违反了开闭原则,所以,很有必要在设计的时候去考虑未来可能会引入的变化,使用合适的模式去应对未来的这种变化。简单工厂
2017-10-25 11:17:01
1385
1
原创 IOS 数据库升级数据迁移解决方案
前言很久以前就遇到过数据库版本升级的引用场景,当时的做法是简单的删除旧的数据库文件,重建数据库和表结构,这种暴力升级的方式会导致旧的数据的丢失,现在看来这并不不是一个优雅的解决方案,现在一个新的项目中又使用到了数据库,我不得不重新考虑这个问题,我希望用一种比较优雅的方式去解决这个问题,以后我们还会遇到类似的场景,我们都想做的更好不是吗?理想的情况是:数据库升级,表结构、主键和约束有变化,新的表
2017-10-25 11:16:57
2257
原创 Objective-C KVO 中 runtime 探究
最近学习Runtime,顺便总结一下在Objective-C中KVO使用到的Runtime机制。系统的KVO使用故事还得从OC的KVO说起,一般的我们使用KVO类似的如下所示,创建一个对象,然后调用addObserver方法进行某个属性的监听,有意思的是,我们在创建对象处和调用了addObserver方法处打断点,然后使用po命令打印对象的isa,发现了对象的isa指针在调用了addObser
2017-10-25 11:16:52
285
原创 RAC的函数式编程
####为什么是函数式数据与函数是松耦合的函数隐藏了它们的实现,语言的抽象是函数,以及将函数组合起来表达。核心抽象模型是函数,不是数据结构核心活动是编写新的函数。变量缺省是不变的,减少可变性变量的使用,并发性好####函数式的实现objc语言使用block实现函数式编程,在典型的函数式编程框架RAC中,把数据的生成和数据的处理单独的放在block中处理,数据的生产和消费之间是松耦
2017-10-25 11:16:46
443
原创 发布自己的CocoaPods库
自己写了一个库,发了点时间研究下发布到cocosPods的步骤,总结在下面发布的库链接 YTTHpplePlus命令行创建Pods库pod lib create {你的项目名称}eg. pod lib create YTTHpplePlus3333根据提示,输入项目的一些配置信息就会生成一个Pods模板工程,完了之后,打开使用命令行创建的项目,结构如图所示:Example就是Po
2017-10-25 11:16:41
359
原创 IOS 使用 WKWebView 加载本地的JS和CSS文件出现乱码问题
####发现问题最近项目中使用到HTML5和原生的混合开发,项目在IOS10上面运行正常,在IOS8下遇到了兼容性的问题,HTML5页面可以加载出来,只是页面样式丢失,并且JS脚本执行不了,所以只能调试看下是否有问题(这篇文章有介绍Safari连接IOS设备调试,推荐使用Safari调试,Chrome调试会有问题)。使用Safari调试器查看HTML文件显示正常但是JS文件和CSS文件显示
2017-10-25 11:16:37
2052
原创 Objective-C XML/HTML 解析器
最近因为工作的需要,使用到HTML解析的功能,网上找到了Hpple库,可以支持HTML的解析,不过Hpple不支持HTML节点的修改,在没有找到更好的轮子的情况下所以打算自己在这个库的基础上进行扩展。这边主要记录下YTTHpplePlus的使用方法,不对实现进行解释,在文章的底部提供了几篇参考文章,有兴趣的可以自行查看。YTTHpplePlus 是Hpple的扩展,在Hpple的基础上扩展了节
2017-10-25 11:16:32
244
原创 使用XIB自定义UIView
使用XIB+UIVIew自定义一个如下的页面,创建一个XIB然后添加内容(后面有XIB对应的源代码,可以粘贴到空xib文件中生产该页面)创建WriterInfoView类继承UIView,下面有WriterInfoView的实现文件可以直接使用需要设置Xib的属性如下,绑定到WriterInfoView中xib的源码如下
2017-10-25 11:16:26
497
原创 undeclared selector warning 警告处理
场景:使用自定义的SDWebImage缓存处理,需要调用一个SDWebImage中的一个私有方法sd_setImage:imageData:basedOnClassOrViaCustomSetImageBlock:{ // 使用默认的图片 SEL sel = @selector(sd_setImage:imageData:basedOnClassOrViaCustomSetIma
2017-10-25 11:16:21
7150
原创 IOS串行队列、并行队列进行同步或者异步任务解析
IOS中GCD的队列分为串行队列和并行队列,任务分为同步任务和异步任务,他们的排列组合有四种情况,下面分析这四种情况的工作方式。同步任务,使用GCD dispatch_sync 进行派发任务- (void)testSync { dispatch_queue_t serialQueue = dispatch_queue_create("com.zyt.queue", DISPATCH_Q
2017-10-25 11:16:17
898
原创 UIView 的 weak 和 strong 修饰符使用的场景
UIView 的 weak 和 strong 修饰符使用的场景weak修饰的UIView在view调用了removeFromSuperView会从父View的subViews中删除,而且会自动销毁strong修饰的UIView在view调用了removeFromSuperView会从父View的subViews中删除,但是Controller还持有该View的指针,不会被销毁销毁如果需要在内
2017-10-25 11:16:13
509
原创 WKWebView OC和JS交互
网页很简单,只有一个按钮,点击按钮会触发一个方法,在事件的方法中通过调用 window.webkit.messageHandlers.NativeModel.postMessage({name: 'zhangyutang', age: 12}); 把消息发送给OC。OC中需要注入相同名称的model:NativeModel。网页代码如下 html5page-oc
2017-10-25 11:16:06
7412
原创 UIWebView中Objective-C和JavaScript通信
JS和OC的交互,使用到JavaScriptCore这个框架,用到的类和协议有JSExport、JSContext网页很简单,只有一个button按钮,button按钮的事件点击主要执行了wst.duobao('123');,wst是自定义的一个普通JS对象,在OC中需要使用到wst捕获对应的js方法调用。网页html代码如下: html5page-oc
2017-10-25 11:16:02
238
原创 IOS XCTest使用异步测试
XCTest使用异步测试需要用到XCTestExpectation这个类,首先在测试方法中创建一个XCTestExpectation对象expectation。XCTestExpectation* exception = [self expectationWithDescription:@"xx"];然后执行自定义的异步方法。在这里测试使用dispatch_async执行异步操作,真
2017-10-25 11:15:58
912
原创 xib和storyboard的不同点总结
xib和storyboard的不同点总结storyboard可以有多个页面以及定义页面之间的逻辑关系xib描述的是一个页面xib中添加CollectionView不能添加CollectionViewCell;添加TableView不能添加TableViewCellstoryboard中添加CollectionView可以添加CollectionViewCell;添加TableVie
2017-10-25 11:15:53
303
原创 IOS分享扩展使用JS脚本
实现一个分享扩展插件,功能是从Safari网页中截取当前网页的图片内容基本的步骤总结在下面:1.创建一个JS文件,命名为MyJavascriptFile.js,文件的功能是解析safari网页内容,获取到网页中的所有图片节点,解析从图片的URL,返回所有图片URL拼接而成的字符串。JS中主要用到run: function(arguments){}这个方法来处理抓取数据的逻辑,处理抓取到的
2017-10-25 11:15:46
3054
原创 IOS使用AVFoundation在视频上添加字幕以及控制字幕时间
IOS在视频上添加字幕效果的基本思路是: 使用自定义的CATextLayer文字图层或者CAShapeLayer文字图层,添加到视频的Layer上创建用户自定义的字幕效果。这两者的区别是:CATextLayer支持设置简单的文字效果,包括文字的内容、字体、字号大小、对其方式、文字颜色、背景颜色等基本的属性;CAShapeLayer功能更强大,提供了CATextLayer没有的边框大小、边框颜色等
2017-02-05 20:42:27
2815
原创 Swift2到Swift3语法变化不完整总结
Swift3语法变化Swift3和Swift2对比,更加安全和更加的面向对象了 - Swift3废弃了旧版本的C类型的GCD写法,而换成了更加面向对象的全新的GCD写法DispatchQueue.global().async { DispatchQueue.main.async { callBack("{\"name\": \"xiaoming\"}"); }}
2017-02-05 20:41:40
451
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-02-05 20:32:15
243
原创 IOS 笔记 - navigationController delegate 劫持
UINavigationControllerDelegate 的定义如下,以及两个常用的方法(在IOS7中又新增了几个新的方法)UIUNavigationController.h……@protocol UINavigationControllerDelegate NSObject>@optional// Called when the navigation co
2014-12-26 14:26:54
4012
原创 使用Nib自定义Cell的复用
自定义的单元格如下:NewFriendCell.h 文件中对应的输出口 :#import @interface NewFriendCell :UITableViewCell@property (retain,nonatomic)IBOutletUIImageView *imgHead;@property (retain,nonatomic)I
2014-11-07 11:42:03
773
OS X与iOS内核编程
2018-01-12
Linux命令行与shell脚本编程大全 第3版 高清晰完整版pdf
2017-12-14
Cocoa_and_Objective-C_Cookbook
2014-12-26
Apress.Pro.iOS.Apps.Performance.Optimization.Nov.2011
2014-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人