【原】iOS開發進階(唐巧)讀書筆記(一)

如何提升iOS開發技能

一、閱讀博客:https://github.com/tangqiaoboy/iOSBlogCN 40多位iOS開發博主的博客地址
二、讀書:每一年閱讀一本高質量的iOS開發書籍
三、看WWDC視頻
四、看蘋果的官方文檔
五、看開源項目的代碼
六、多寫代碼,多思考
七、多和同行進行交流
八、分享ios

第一部分:iOS開發工具

一、Reveal界面調試工具

一、虛擬機集成
二、真機集成(iOS開發進階P47)git

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];

二、移動統計工具

國外:Flurry(不會被牆)
國內:友盟github

三、crash統計工具

Crashlytics
Bugly(騰訊)json

四、App Store統計工具

App Annievim

第二部分:iOS開發實踐

一、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方法

二、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), ^{
    // 彙總結果
});

一、NSJSONSerializationNSKeyArchiver 更好

在選擇持久化方案時,系統提供的 NSJSONSerializationNSKeyArchiver 在效率和體積上都更好。
NSJSONSerializationNSKeyArchiver 快了7倍,體積小了一半
網上有詳細的測試:https://github.com/randomsequence/NSSerialisationTests安全

二、慎用Block

block容易產生循環引用問題
從架構層面來看,若是在使用 block 時須要時刻注意避免循環引用問題。那麼還不如不使用 block。用 delegate 來實現要安全的多多線程

注意:類方法毫不會產生循環引用!架構

三、忽略編譯警告⚠️

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

相關文章
相關標籤/搜索