如何提高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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/11407.html
標籤:iOS
上一篇:iOS---OBJC_ASSOCIATION_ASSIGN可能引起的Crash
下一篇:Client error attempting to change layout margins of a private view
