iOS开发进阶(唐巧)读书笔记(一)

如何提高iOS开发技能

1、阅读博客:https://github.com/tangqiaoboy/iOSBlogCN 40多位iOS开发博主的博客地址
2、读书:每年阅读一本高质量的iOS开发书籍
3、看WWDC视频
4、看苹果的官方文档
5、看开源项目的代码
6、多写代码,多思考
7、多和同行进行交流
8、分享

第一部分:iOS开发工具

1、Reveal界面调试工具

1、虚拟机集成
2、真机集成(iOS开发进阶P47)

vim ~/.lldbinit
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle]               pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]           postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]            postNotificationName:@"IBARevealRequestStop" object:nil];

2、移动统计工具

国外:Flurry(不会被墙)
国内:友盟

3、crash统计工具

Crashlytics
Bugly(腾讯)

4、App Store统计工具

App Annie

第二部分:iOS开发实践

1、CoreFoundation对象的内存管理

  • CFStringRef
CFStringCreateWithCString(kCFAllocatorDefault, “Hello World”, kCFStringEncodingUTF8)
  • CF对象转换成OC对象
  1. __bridge:只做类型转换,不修改相关对象的引用计数,原来的CF对象在不用时,需要调用CFRelease方法
  2. __bridge_retained:类型转换后,将相关对象的引用计数加1,原来的CF对象在不用时,需要调用CFRelease方法
  3. __bridge_transfer:类型转换后,将对象的引用计数交给ARC管理,CF对象在不用时,不在需要调用CFRelease方法

2、GCD

  • 执行一次
    dispatch_once 代码提示
  • 延迟执行
    dispatch_after 代码提示
  • 自定义queue
dispatch_queue_t urls_queue = dispatch_queue_create(“blog.devzhang.com”, NULL);
dispatch_async(urls_queue, ^{

});
dispatch_release(urls_queue);
  • 多线程处理,最后汇总结果(具体使用?)
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
    // 并行执行的线程一
});
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
    // 并行执行的线程二
});
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
    // 汇总结果
});

1、NSJSONSerializationNSKeyArchiver 更好

在选择持久化方案时,系统提供的 NSJSONSerializationNSKeyArchiver 在效率和体积上都更好。
NSJSONSerializationNSKeyArchiver 快了7倍,体积小了一半
网上有详细的测试:https://github.com/randomsequence/NSSerialisationTests

2、慎用Block

block容易产生循环引用问题
从架构层面来看,如果在使用 block 时需要时刻注意避免循环引用问题。那么还不如不使用 block。用 delegate 来实现要安全的多

注意:类方法绝不会产生循环引用!

3、忽略编译警告⚠️

https://blog.csdn.net/denggun12345/article/details/83586790

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lancy's Blog Blog Archives About MeTwitterWeiboGitHubRSS ...
    其实也没有阅读 5,533评论 0 24
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 4,190评论 2 19
  • (一)推荐的图书 1.书里推荐的图书: (二)推荐的博客和如何更好的学习iOS开发 1.提高iOS开发技能 1)阅...
    Molary阅读 3,158评论 1 11
  • 闭上眼睛坐在公交车上,风从开着的窗户外吹动我的碎发,感受音乐的同时听着风和车刮动树叶的声音
    帅气的海明威阅读 131评论 0 0
  • 一天,柳教授带着他孙子去遛弯,看到一个小贩卖水果。就和孙子走过去,有香蕉、苹果和橙子,都挺新鲜的。摸摸这个看着那个...
    清风有两袖阅读 277评论 2 10