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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章