如何提高iOS開發技能 1、閱讀博客: "https://github.com/tangqiaoboy/iOSBlogCN" 40多位iOS開發博主的博客地址 2、讀書:每年閱讀一本高質量的iOS開發書籍 3、看WWDC視頻 4、看蘋果的官方文檔 5、看開源項目的代碼 6、多寫代碼,多思考 7、多和 ...
如何提高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對象
- __bridge:只做類型轉換,不修改相關對象的引用計數,原來的CF對象在不用時,需要調用CFRelease方法
- __bridge_retained:類型轉換後,將相關對象的引用計數加1,原來的CF對象在不用時,需要調用CFRelease方法
- __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、NSJSONSerialization
比 NSKeyArchiver
更好
在選擇持久化方案時,系統提供的
NSJSONSerialization
比NSKeyArchiver
在效率和體積上都更好。
NSJSONSerialization
比NSKeyArchiver
快了7倍,體積小了一半
網上有詳細的測試:https://github.com/randomsequence/NSSerialisationTests
2、慎用Block
block
容易產生迴圈引用問題
從架構層面來看,如果在使用block
時需要時刻註意避免迴圈引用問題。那麼還不如不使用block
。用delegate
來實現要安全的多
註意:類方法絕不會產生迴圈引用!
3、忽略編譯警告⚠️
https://blog.csdn.net/denggun12345/article/details/83586790