天天看點

編寫高品質iOS代碼的52個建議

這些建議出自《Effective Objective-C 2.0:編寫高品質iOS與OS X代碼的52個有效方法 [Effective Objective-C 2.0][英] Matt Galloway 著;愛飛翔 譯》,有興趣的同學可以去看看。

熟悉Objective-C

1. 了解 Objective-C 語言的起源;

2. 在類的頭檔案中盡量少引入其他頭檔案;

3. 多用字面量文法,少用與之等價的方法;

4. 多用類型常量,少用 #define 預處理指令;

5. 用枚舉表示狀态、選項、狀态碼;

對象、消息、運作期

6. 了解“屬性”這一概念;

7. 在對象内部盡量直接通路示例變量;

8. 了解“對象等同性”這一概念;

9. 以“類族模式”隐藏實作細節;

10. 在既有類中使用關聯對象存放自定義資料;

11. 了解 objc_msgSend 的作用;

12. 了解消息轉發機制;

13. 用“方法調配技術”調試“黑盒方法”;

14. 了解“類對象”的用意;

接口與API設計

15. 用字首避免命名空間沖突;

16. 提供全能初始化方法;

17. 實作 description 方法;

18. 盡量使用不可變對象;

19. 使用清晰而協調的命名方式;

20. 為私有方法加字首;

21. 了解 Objective-C 錯誤模型;

22. 了解 NSCopying 協定;

協定與分類

23. 通過委托與資料源協定進行對象間通信;

24. 将類的實作代碼分散到便于管理的數個分類之中;

25. 總是為第三方類的分類名稱加字首

26. 勿在分類中聲明屬性;

27. 使用 “class-continuation 分類” 隐藏實作細節;

28. 通過協定提供匿名對象;

記憶體管理

29. 了解引用計數;

30. 以 ARC 簡化引用計數;

31. 在 dealloc 方法中隻釋放引用并解除監聽;

32. 編寫“異常安全代碼”時留意記憶體管理問題;

33. 以弱引用避免保留環;

34. 以“自動釋放池塊”降低記憶體峰值;

35. 用“僵屍對象”調試記憶體管理問題;

36. 不要使用 retainCount ;

塊與大中樞派發

37. 了解“塊”這一概念;

38. 為常用的塊類型建立 typedef ;

39. 用handler塊降低代碼分散程度;

40. 用塊引用其所屬對象時不要出現保留環;

41. 多用派發隊列,少用同步鎖;

42. 多用 GCD ,少用 preformSelector 系列方法;

43. 掌握 GCD 及操作隊列的使用時機;

44. 通過 Dispatch Group 機制,根據系統資源狀況來執行任務;

45. 使用 dispatch_once 來執行隻需運作一次的線程安全代碼;

46. 不要使用 dispatch_get_current_queue ;

系統架構

47. 熟悉系統架構;

48. 多用塊枚舉,少用 for 循環;

49. 對自定義其記憶體管理語義的 collection 使用無縫橋接;

50. 建構緩存時選用 NSCache 而非 NSDictionary ;

51. 精簡 initialize 與 load 的實作代碼;

52. 别忘了 NSTimer 會保留其目标對象。

最後給一下此書電子版下載下傳位址,請支援正版圖書!

轉載于:https://juejin.im/post/5a3a14e7f265da432652fab7

繼續閱讀