美文网首页
iOS开发进阶(唐巧)读书笔记(一)

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

作者: 墨隐于非 | 来源:发表于2019-10-10 11:21 被阅读0次

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

    相关文章

      网友评论

          本文标题:iOS开发进阶(唐巧)读书笔记(一)

          本文链接:https://www.haomeiwen.com/subject/qykoectx.html