一、iOS开发工具
1.类似java的maven,iOS中管理第三方库的工具cocoapods
2.网络封包分析工具Charles
1).支持SSL代理,可以截取分析SSL的请求
2).支持流量控制。可以模拟慢速网络,以及等待时间较长的请求
3).支持AJAX调试。可以自动将JSON或XML数据格式化
4).支持AMF调试。可以讲Flash Remoting或Flex Remoting信息格式化
5).支持重发网络请求
6).支持修改网络请求参数
7).支持网络请求的截获和动态修改
8).检查HTML、CSS和RSS内容是否符合W3C标准
3.移动统计工具Flurry
4.崩溃日志记录工具Crashlytics(推荐,可以收集到iTunes Connect收集不到的崩溃信息)
5.App Store统计工具App Annie
6.常用Xcode插件
1).KSImageNamed
2).VVDocumenter
7.取色工具,系统自带的数码测色计
8.压缩图片工具,ImageOptim
9.设计稿标注、测量工具,马克鳗
http://www.getmarkman.com/,需要预装adobe air
10.内侧分发工具,蒲公英,
http://www.pgyer.com/
二、对象内存管理,需要注意Core Foundation这部分代码要手动管理它们的引用计数
三、GCD简介
修改block之外的变量
后台运行最多10分钟时间清理本地缓存、发送统计数据等工作
四、UIWindow
五、多种中文字体下载
六、UIWebView
使用Safari来进行页面调试,直接修改HTML、css代码,对javascript打断点调试
七、网络安全
事先生成一对用于加密的公私钥,客户端登录时,使用公钥将用户的密码加密后,将密文传输到服务器。服务器使用私钥将密码解密,然后加盐之后再多次求MD5,之后再和服务器原来存储的用同样方法处理过的密码匹配,如果一致,则登录成功。这样,黑客即使截获了加密后的密文,由于没有私钥,也无法还原出原始的密码。而服务器即使被黑客攻陷,黑客除了暴力尝试,也无法从加盐和多次MD5后的密码中还原出原始的密码。从而保证了用户密码的安全
关键的逻辑用纯C来写,防止反汇编
八、实战技巧
1.清除Xcode缓存/Users/YDCY/Library/Developer/Xcode/DerivedData
2.模拟慢速网络
模拟器Charles
真机->设置->开发者->Status->Network Link Conditioner
九、oc对象
1.在控制台打印对象的依次继承,p *view
打印具体值,po view
2.在runtime.h中有一个名为methodLists的指针的指针,通过修改该指针指向的指针的值,就可以动态地为某一个类增加成员方法,这也是Category的实现原理,同时说明了为什么Category只可为对象增加成员方法,却不能增加成员对象
3.class_replaceMethod替换类方法的定义
method_exchangeImplementations交换两个方法的实现
method_setImplementation设置一个方法的实现
十、Tagged Pointer
1.Tagged Pointer专门用来存储小的对象,例如NSNumber和NSDate
2.Tagged Pointer指针的值不再是地址了,而是真正的值。所以,实际上它不再是一个对象了,只是一个披着对象“皮”的普通变量,它的内存并不在堆中,也不需要malloc和free
3.在内存读取上有着以前3倍的效率,创建时比以前快106倍
Tagged Pointer给64位系统带来了内存的节省和运行效率的提高,因为Tagged Pointer并不是真正的对象,使用时需要注意不要直接访问其isa变量
十一、block对象模型
避免循环引用
使用__weak关键字