日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 编写高质量Objective-C代码(八)

發布時間:2024/3/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 编写高质量Objective-C代码(八) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

這幾篇文章是小編在鉆研《Effective Objective-C 2.0》的知識產出,其中包含作者和小編的觀點,以及小編整理的一些demo。希望能幫助大家以簡潔的文字快速領悟原作者的精華。

在這里,向原作者Matt Galloway表達誠摯的敬意。

文章目錄如下:

  • iOS 編寫高質量Objective-C代碼(一)

  • iOS 編寫高質量Objective-C代碼(二)

  • iOS 編寫高質量Objective-C代碼(三)

  • iOS 編寫高質量Objective-C代碼(四)

  • iOS 編寫高質量Objective-C代碼(五)

  • iOS 編寫高質量Objective-C代碼(六)

  • iOS 編寫高質量Objective-C代碼(七)

本篇的主題是:“系統框架”。

在我們日常開發中,都會使用系統的一些框架。因此熟悉系統框架是很有必要的。

那么今天,我們就一起來探索一下系統框架中有哪些珍寶呢?

一、熟悉系統框架

系統框架包括但不限于:

  • 1. Foundation:基礎框架。

提供了包括數據存儲和持久性,文本處理,日期和時間計算,排序和過濾以及網絡等功能。Foundation定義的類,協議和數據類型在整個macOS,iOS,watchOS和tvOS SDK中使用。

  • 2. CoreFoundation:核心基礎框架。

提供了C語言級的基礎功能,為應用程序提供基本數據管理和服務功能。并可通過無縫橋接技術(__bridge)實現C語言類與OC對象的轉換。

  • 3. UIKit:視圖框架。

為iOS與tvOS提供界面與視圖的功能。(重要:除非另有說明,否則一定要在主線程中使用UIKit框架。)

  • 4. CoreAnimation:核心動畫框架。

提供了高幀速率和流暢的動畫功能,并且不會給CPU太多負擔,也不會降低應用程序的響應速度。

  • 5. CoreGraphics:核心圖形框架。

基于Quartz繪圖引擎,提供了輕量級2D渲染所必備的數據結構與函數。包括CGPoint、CGSize、CGRect等數據結構。

  • 6. CoreData:核心數據框架。

提供了將OC對象寫入數據庫的功能,便于持久保存。

  • 7. CoreText:文本框架。

提供了C語言級別的文字排版及渲染操作。

  • 8. AVFoundation:音視頻框架。

提供了控制攝像頭,以及處理、合成、控制、導入、導出音頻/視頻的功能。

  • 9. CFNetwork:網絡框架。

提供了C語言級別的網絡通信能力,將BSD socket抽象成易于使用的網絡接口,以便網絡通信。

  • 10. ARKit:AR框架。

  • 11. SpriteKit:2D游戲框架。

  • 12. CoreLocation、MapKit:定位地圖相關框架。

  • 13. Address Book:通訊錄框架。

  • 14. HealthKit:健康相關框架。

  • 15. HomeKit:為智能化硬件提供的框架。

  • 16. PhotoKit:相冊框架。

……(還有很多框架,詳細的請看下面的官方文檔。)

PS:蘋果官方文檔

二、多用塊枚舉,少用for循環

遍歷collection有四種方法:for循環、NSEnumerator遍歷法、for-in快速遍歷法、塊枚舉法。

1. for循環:群昵稱:ios-Swift/Object C開發上架
群號: 869685378 ? 找ios馬甲包開發者合作,有興趣請添加Q 51259559

最基本的循環方法,與其他語言類似。

NSArray?*arr?=?@[@1,?@2,?@3,?@4,?@5];for?(NSInteger?i?=?0;?i?<?5;?i++)?{NSLog(@"%@",arr[i]); }

?

2. NSEnumerator遍歷法:

?

NSArray?*arr?=?@[@1,?@2,?@3,?@4,?@5];NSEnumerator?*enumerator?=?[arr?objectEnumerator]; NSNumber?*num?=?nil;while?((num?=?[enumerator?nextObject])?!=?nil)?{NSLog(@"%@",num); }

?

3. for-in快速遍歷法:

在開發中,常使用的方法。

NSArray?*arr?=?@[@1,?@2,?@3,?@4,?@5];for?(NSNumber?*num?in?arr)?{NSLog(@"%@",num); }

?

4. 塊枚舉法:

基于塊來遍歷,遍歷時既能獲取對象,也能知道其下標。此外,還能通過stop對象終止遍歷。(即調用*stop = YES即可)

  • 官方:Executes a given block using each object in the array, starting with the first object and continuing through the array to the last object.

  • 翻譯:使用數組中的每個對象執行給定的block,從第一個對象開始,一直到最后一個對象。

  • 基本使用:

NSArray?*arr?=?@[@1,?@2,?@3,?@4,?@5];[arr?enumerateObjectsUsingBlock:^(id??_Nonnull?obj,?NSUInteger?idx,?BOOL?*?_Nonnull?stop)?{NSLog(@"%@",obj);if?(idx?==?arr.count?-?1)?{*stop?=?YES;} }];

?

三、對自定義其內存管理語義的collection使用無縫橋接

無線橋接技術(__bridge):可將“OC對象”與“C語言中的數據結構”來回轉換。

舉個簡單的例子:NSArray與CFArrayRef的無縫橋接。

NSArray?*anNSArray?=?@[@1,?@2,?@3,?@4,?@5];CFArrayRef?aCFArray?=?(__bridge?CFArrayRef)anNSArray;//!<?無縫橋接 NSLog(@"Size?of?array?=?%li",?CFArrayGetCount(aCFArray)); //?Output:?Size?of?array?=?5

?

四、構建緩存時選用NSCache而非NSDictionary

NSCache的優點:

  • 當系統資源將要耗盡時,NSCache會自動刪減。并先行刪除“最久未使用的對象”。

  • NSCache不會自動拷貝鍵。(PS:因為NSCache沒有遵循/協議)

  • NSCache是線程安全的。在不加同步鎖的前提下,依然支持多線程訪問NSCache。

五、精簡load與initialize的實現代碼

load與initialize方法都要保持精簡。

load中的注意點:

  • 如果分類和所屬類都定義了load方法,則會先調用主類里的load方法,然后再調用分類的。

  • 在load方法內使用其他類是不安全的。(因為調用時其他類可能還沒有加載好)

  • 如果某個類本身沒有實現load方法,那么不管超類是否實現load方法都不會調用。

  • load應只用于調試,而非執行任務。

  • initialize中的注意點:

  • 如果某個類未實現initialize,而其超類實現了,就會運行超類的方法。

  • 開發者無法控制類的初始化時機。

  • 如果某個類的initizalize實現代碼很復雜,其中用到了別的類。若那些類還沒初始化,就會強迫他們初始化。

  • initialize方法只應該用來設置內部數據。

  • 六、別忘了NSTimer會保留其目標對象

    • NSTimer對象會保留其目標,直到計時器本身失效為止,調用[_timer invalidate];可令計時器失效。另外,一次性的計時器在觸發完任務后也會失效。

    • 反復執行任務的計時器(repeating timer)很容易產生循環引用。如果這種計時器的目標對象又保留了計時器本身,那就會產生循環引用,導致內存泄漏。可能是直接發生的,也可能是其他對象間接發生的。

    作者: MrLiuQ

    群昵稱:ios-Swift/Object C開發上架
    群號: 869685378 ? 找ios馬甲包開發者合作,有興趣請添加Q 51259559

    總結

    以上是生活随笔為你收集整理的iOS 编写高质量Objective-C代码(八)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 不卡视频在线播放 | 国产又黄又粗又猛又爽的视频 | 欧美日日 | 欧美激情69 | 好吊日精品视频 | 国产视频日韩 | 麻豆一区二区在线观看 | 日韩av片在线 | 成人午夜淫片免费观看 | 久久久久久久美女 | www日本视频| 国产视频h | 久久中文av| 一级人爱视频 | 免费黄色的网站 | 欧美精品在欧美一区二区少妇 | xxxxxx国产| 欧美在线91 | 中文不卡视频 | 久久久久九九九 | 国产69久久精品成人看 | 日本毛片网站 | 国产自产在线 | 欧美日韩中文国产一区发布 | 亚洲中文一区二区 | 国产又黄又粗又硬 | 国产乱乱 | 婷婷六月在线 | 成人动漫一区二区三区 | 91丨九色丨蝌蚪丨对白 | 全程偷拍露脸中年夫妇 | av福利院 | 嫩草一区二区三区 | 国产精品免费一区二区三区在线观看 | 中文字幕一区二区三区门四区五区 | 中文字幕一区二区三区免费 | 人人爽久久涩噜噜噜网站 | av新天堂 | 91黄色小网站 | 玩日本老头很兴奋xxxx | 美国式禁忌1980 | 一本久道视频一本久道 | 日韩av成人网 | 久草国产在线视频 | 777久久| 丁香啪啪 | 日本一区二区三区在线免费观看 | 草草影院网址 | 狠狠人妻久久久久久综合麻豆 | 亚洲精品一区二区三区四区五区 | 超碰国产91 | 天堂8中文在线 | 伦理片av | 亲女禁h啪啪宫交 | 激情91| 色哟哟免费在线观看 | aaa影院 | 日韩久久免费视频 | 男女超碰 | 国产黄页| 亚洲综合精品 | 国产精品第8页 | 91麻豆一区二区 | 国产一区高清 | 欧美日韩国产激情 | 国内自拍偷拍视频 | 亚洲伊人av | 亚洲性激情 | 日韩人妻无码一区二区三区 | 国产日韩中文字幕 | 激情婷婷综合网 | 精品97人妻无码中文永久在线 | 毛片黄色片 | a毛片毛片av永久免费 | 欧美黄在线观看 | 中文字幕一区二区av | 欧美日本亚洲韩国国产 | 狠狠的干狠狠的操 | 亚洲色图在线观看视频 | 国产69精品久久久久久 | 国产美女网 | 成片在线观看 | 欧美两根一起进3p做受视频 | 国产 欧美 日韩 一区 | 公车乳尖揉捏酥软呻吟 | 欧洲成人午夜精品无码区久久 | 久久9久久 | 在线免费黄色av | youjizz日韩 | 欧美一区二区免费 | 亚洲视频一区二区三区在线观看 | 日日躁夜夜躁白天躁晚上躁91 | 国产嫩草影院久久久久 | 精品少妇人妻一区二区黑料社区 | 欧美亚洲丝袜 | 国产视频精品一区二区三区 | 日韩美女在线 | 日本在线免费 | av在线播放一区二区三区 |