OC基础(15)
- @property參數
- @Property練習
- @class
- 循環retian
@property參數
本小節知識點:
4. 【掌握】控制set方法和get方法的名稱
1.控制set方法的內存管理
- retain : release舊值,retain新值(用于OC對象)
- assign : 直接賦值,不做任何內存管理(默認,用于非OC對象類型)
- copy : release舊值,copy新值(一般用于NSString *)
2.控制需不需要生成set方法
- readwrite :同時生成set方法和get方法(默認)
- readonly :只會生成get方法
3.多線程管理
- atomic :性能低(默認)
- nonatomic :性能高
4.控制set方法和get方法的名稱
- setter : 設置set方法的名稱,一定有個冒號:
-
getter : 設置get方法的名稱
-
注意: 不同類型的參數可以組合在一起使用
?
@Property練習
本小節知識點:
1.@Property練習
-
微博類(Status)
- 文字內容(text)
- 配圖(picture)
- 發表時間(createTime)
- 作者(author)
- 轉發的說說(repostStatus)
- 評論數(commentCount)
- 轉發數(retweetCount)
- 贊數(likeCount)
-
作者類(Author)
- 昵稱(name)
- 頭像(icon)
- 生日(birthday)
- 賬號(account)
-
賬號(Account)
- 賬號名稱(name)
- 賬號密碼(pwd)
- 賬號注冊時間(registerTime)
?
?
@class
本小節知識點:
1.@class基本概念
-
作用
- 可以簡單地引用一個類
-
簡單使用
- @class Dog;
- 僅僅是告訴編譯器:Dog是一個類;并不會包含Dog這個類的所有內容
-
具體使用
- 在.h文件中使用@class引用一個類
- 在.m文件中使用#import包含這個類的.h文件
2.@class其它應用場景
- 對于循環依賴關系來說,比方A類引用B類,同時B類也引用A類
- 這種嵌套包含的代碼編譯會報錯
- 當使用@class在兩個類相互聲明,就不會出現編譯報錯
3.@class和#import
-
作用上的區別
- #import會包含引用類的所有信息(內容),包括引用類的變量和方法
- @class僅僅是告訴編譯器有這么一個類, 具體這個類里有什么信息, 完全不知
-
效率上的區別
- 如果有上百個頭文件都#import了同一個文件,或者這些文件依次被#import,那么一旦最開始的頭文件稍有改動,后面引用到這個文件的所有類都需要重新編譯一遍 , 編譯效率非常低
- 相對來講,使用@class方式就不會出現這種問題了
README
循環retian
本小節知識點:
1.循環retian基本概念
-
循環retain的場景
- 比如A對象retain了B對象,B對象retain了A對象
-
循環retain的弊端
- 這樣會導致A對象和B對象永遠無法釋放
-
循環retain的解決方案
- 當兩端互相引用時,應該一端用retain、一端用assign
轉載于:https://www.cnblogs.com/zhoudaquan/p/5016912.html
總結
- 上一篇: 禅道 Rest API 开发
- 下一篇: dbms_job涉及到的知识点