iOS的發展,對開發者來說,無疑在技術層面上給了不少的考驗,因此開發者必須通過不斷學習新知識來完善自己。先將iOS開發的關鍵詞奉獻給各位,希望對各位的工作和學習有幫助。
知識一:概念
① 淺Copy:指針的複製,只是多了一個指向這塊內存的指針,共用一塊內存。
② 深Copy:內存的複製,兩塊內存是完全不同的,也就是兩個對象指針分別指向不同的內存,互不干涉。
③ atomic是Objc使用的一種線程保護技術,主要是防止代碼還沒有寫完就被另外一個線程讀取,造成數據錯誤。但這種機制由於比較耗費系統資源,所以在iphone這種小型設備上,如果沒有使用多線程間的通訊編程,那麼nonatomic是一個非常好的選擇。
知識二:各種屬性的解析
1、 weak:<修飾Object類型,ARC下修飾delegate屬性>
① 在ARC環境下,所有指向這個對象的weak指針都將被置為nil。
② 修飾Object類型,修飾的對象在釋放後,指針地址會被置為nil,是一種弱引用。
2、assign:< 用於非指針變量。用於基礎數據類型 (例如NSInteger)和C數據類型(int, float, double, char, 等),另外還有id >
用於對基本數據類型進行複製造操作,不更改引用計數,也可以用來修飾對象。
3、copy:修飾NSString、NSArray、NSDictionary等有對應可變類型的對象。
是內容拷貝,會在內存里拷貝一份對象,兩個指針指向不同的內存地址。
4、strong:ARC下的strong等同於MRC下的retain都會把對象引用計數加1。
在ARC環境下,只要某一對象被一個strong指針指向,該對象就不會被銷毀。
5、retain:釋放舊的對象,將舊對象的值賦予輸入對象,再提高輸入對象的索引計數為1
在MRC中,你需要自己retain一個想要保持的對象,ARC環境下就不需要了。
知識三:屬性之間區別
① strong與weak的區別
strong類似於retain,會將對象的引用計數器+1,分配內存地址。
weak類似於指針,只是單純的指向某個地址,但是本身並未分配內存地址。當指向的地址被銷毀時,該指針會自動nil。
② assign和weak的區別
對於assign來說,一是非指針變量,比如說NSInteger之類的基礎數據類型、C數據類型,還有就是避免出現循環引用的時候,
對於weak,其和assign差不多,但是它多了一點,就是,它會自動對該類型變量設置為nil。
在iOS開發中,你可能會遇到了不少的彎路,但是只要用心去學,很快就能避免這些彎路,在開發的道路上走得更加順暢。