经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
iOS开发进阶(唐巧)读书笔记(一)
来源:cnblogs  作者:墨隐于非  时间:2019/10/11 8:52:29  对本文有异议

如何提高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)

  1. vim ~/.lldbinit
  2. command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
  3. command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
  4. command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
  5. 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
  1. 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
  1. dispatch_queue_t urls_queue = dispatch_queue_create(“blog.devzhang.com”, NULL);
  2. dispatch_async(urls_queue, ^{
  3. });
  4. dispatch_release(urls_queue);
  • 多线程处理,最后汇总结果(具体使用?)
  1. dispatch_group_t group = dispatch_group_create();
  2. dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
  3. // 并行执行的线程一
  4. });
  5. dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
  6. // 并行执行的线程二
  7. });
  8. dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
  9. // 汇总结果
  10. });

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

原文链接:http://www.cnblogs.com/gfxxbk/p/11646802.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号