日韩性视频-久久久蜜桃-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代码(八)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产第六页 | 欧美日韩国产片 | 精品久久久免费 | 成人a√ | 印度午夜性春猛xxx交 | 在线视频精品 | 欧美精品一区二区成人 | 操穴网站 | 人人妻人人澡人人爽欧美一区双 | 黄网站欧美内射 | 95国产精品 | 亚洲7777 | 欧美亚洲韩国 | 999资源站 | 久久久综合色 | 日韩欧美精品一区 | 性爱视频日本 | 日本一级做a爱片 | 男人午夜影院 | 国产激情无码一区二区三区 | 91麻豆国产福利精品 | 电影寂寞少女免费观看 | 有码一区二区三区 | 91黄色短视频 | 一区二区xxx | 天天想你在线观看完整版高清 | 在线观看日韩国产 | 中文字幕视频在线观看 | 国产在线成人精品午夜 | 在线播放ww | 国产九九精品视频 | 久久久精品中文字幕麻豆发布 | 中文字幕人妻一区二区三区 | 久久久久美女 | 国产一区二区网站 | 国产精伦| 自拍偷拍视频在线观看 | 免费一区二区三区 | 黄色小视频在线免费观看 | 国产一级av毛片 | 亚洲AV无码国产精品国产剧情 | 青草一区二区 | 亚洲片国产一区一级在线观看 | aaaaaabbbbbb毛片| 欧洲久久久久久 | 中文字幕中文字幕 | 蜜桃视频一区二区三区 | 亚洲天堂自拍偷拍 | 国语对白在线观看 | 成人在线观看亚洲 | 一个色的综合 | 中文在线观看免费高清 | 欧美精品影院 | 亚洲精品18p | 韩国精品久久久 | 亚洲人精品午夜射精日韩 | jizz一区二区 | 色噜噜一区二区三区 | 天天弄天天操 | 精品三级网站 | 国产片淫乱18一级毛片动态图 | 青青草福利视频 | av综合在线观看 | 舐丝袜脚视频丨vk | 91精品免费在线 | 国产3p精品一区 | 嫩草视频在线观看视频 | 狠狠操天天干 | 欧美理论片在线观看 | 奇米影视第四色首页 | 夜色福利 | 欧美绿帽合集xxxxx | 色播av| 国产成人精品白浆久久69 | 一级片在线免费观看 | 精品久久无码视频 | 女人的毛片 | 亚洲第一天堂网 | 精品人妻一区二区三区换脸明星 | 台湾一级视频 | 亚洲少妇30p | 欧美中文字幕在线 | 色欲一区二区三区精品a片 在线观看黄网站 | 天堂在线视频tv | 国产一级久久久 | 特级毛片在线观看 | 国产精品乱码一区 | 中国黄色一级大片 | 日韩欧美二区三区 | 国产美女自慰在线观看 | www.国产视频 | 深夜福利一区二区 | 国产在线一区二区视频 | 午夜影院免费观看 | 欧美爱爱免费视频 | 99精品国产免费 | 国产女人18毛片水18精品 | 日韩中文一区 | 成人片免费视频 |