当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS开发进阶(唐巧)读书笔记(一)

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

2019年10月10日  | 移动技术网移动技术  | 我要评论

如何提高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、忽略编译警告⚠️

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网