@property參數
本小節知識點:
- 【掌握】控制set方法的內存管理
- 【掌握】控制需不須要生成set方法
- 【掌握】多線程管理
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方法的名稱
@Property練習
本小節知識點:
- 【掌握】@Property練習
1.@Property練習
-
微博類(Status)ide
- 文字內容(text)
- 配圖(picture)
- 發表時間(createTime)
- 做者(author)
- 轉發的說說(repostStatus)
- 評論數(commentCount)
- 轉發數(retweetCount)
- 贊數(likeCount)
-
做者類(Author)post
- 暱稱(name)
- 頭像(icon)
- 生日(birthday)
- 帳號(account)
-
帳號(Account)性能
- 帳號名稱(name)
- 帳號密碼(pwd)
- 帳號註冊時間(registerTime)
模擬場景:
* 老王在2010-1-1 17:56:34註冊了一個帳號
(名稱:xiaomage@520it.com, 密碼:haomage)
* 老王的生日是1986-3-8 18:18:18
* 老王發佈一條說說
* 文字內容 @「爆米花手機比逼格更有逼格」
* 圖片 @「phone.png」
* 發表時間: 2015-6-20 10:23:23
* 做者: 老王
* 被轉發的說說: 沒有
* 評論數: 100
* 轉發數: 90
* 點贊數: 200
* 王大錘在2012-8-8 19:26:54註冊了一個帳號
(名稱:dachuimeimei@520it.com, 密碼:654321)
* 王大錘的生日是1989-9-6 14:16:28
* 王大錘在2015-6-21 20:47:09時,轉發了張三以前發佈的說說, 而且還附帶了一句話:@「真的頗有逼格」
@class
本小節知識點:
- 【掌握】@class基本概念
- 【掌握】@class其它應用場景
- 【掌握】@class和#import
1.@class基本概念
-
做用ui
-
簡單使用atom
- @class Dog;
- 僅僅是告訴編譯器:Dog是一個類;並不會包含Dog這個類的全部內容
-
具體使用url
- 在.h文件中使用@class引用一個類
- 在.m文件中使用#import包含這個類的.h文件
2.@class其它應用場景
- 對於循環依賴關係來講,比方A類引用B類,同時B類也引用A類
- 這種嵌套包含的代碼編譯會報錯
#import "B.h"
@interface A : NSObject
{
B *_b;
}
@end
#import 「A.h"
@interface B : NSObject
{
A *_a;
}
@end
- 當使用@class在兩個類相互聲明,就不會出現編譯報錯
@class B;
@interface A : NSObject
{
B *_b;
}
@end
@class A;
@interface B : NSObject
{
A *_a;
}
@end
3.@class和#import
-
做用上的區別spa
- #import會包含引用類的全部信息(內容),包括引用類的變量和方法
- @class僅僅是告訴編譯器有這麼一個類, 具體這個類裏有什麼信息, 徹底不知
-
效率上的區別線程
- 若是有上百個頭文件都#import了同一個文件,或者這些文件依次被#import,那麼一旦最開始的頭文件稍有改動,後面引用到這個文件的全部類都須要從新編譯一遍 , 編譯效率很是低
- 相對來說,使用@class方式就不會出現這種問題了
README
循環retian
本小節知識點:
- 【掌握】循環retian基本概念
1.循環retian基本概念
-
循環retain的場景
- 好比A對象retain了B對象,B對象retain了A對象
-
循環retain的弊端
-
循環retain的解決方案
- 當兩端互相引用時,應該一端用retain、一端用assign