3 回答

TA貢獻1828條經驗 獲得超6個贊
// The following declaration is a synonym for: @property(retain) MyClass *myObject;@property(strong) MyClass *myObject;
strong
retain
strong
retain
assign
weak

TA貢獻1815條經驗 獲得超6個贊
原子/缺省 非原子 強=保留/違約 瘦弱 保留 指定/默認 不安全未保留 復制 只讀 閱讀/默認
1.強(iOS 4=保留)
上面寫著“把這個放在堆里直到我不再指著它” 換句話說,“我是業主,你不能在此之前取消這一目標,與保留一樣好” 只有在需要保留對象時才使用Strong。 默認情況下,所有實例變量和局部變量都是強指針。 我們通常對UIViewControlers(UI項的父級)使用強 Strong與ARC一起使用,它基本上可以幫助您,不必擔心對象的保留計數。當你完成它時,弧形自動釋放它。使用關鍵字強意味著你擁有這個對象。
@property (strong, nonatomic) ViewController *viewController;@synthesize viewController;
2.弱 -
上面寫著“只要別人強烈地指點,就留著這個” 與分配相同,不保留或釋放 “弱”引用是指不保留的引用。 我們通常將弱用于IBOutlet(UIViewController的子程序),這是因為只要父對象存在,子對象就會存在。 弱引用是不保護引用對象免受垃圾收集器回收的引用。 弱本質上是賦值,是一種未保留的屬性。除了當對象被解除分配時,弱指針將自動設置為零。
@property (weak, nonatomic) IBOutlet UIButton *myButton;@synthesize myButton;
假設我們的目標是一只狗,而狗想要逃跑(被取消分配)。
有力的指針就像一根拴在狗身上的繩子。只要你把皮帶系在狗身上,狗就不會跑掉。如果五個人把他們的皮帶附在一只狗身上(五個強指針指向一個物體),那么這只狗將不會逃跑,直到所有五條皮帶都被分離。
另一方面,弱指針就像小孩子指著狗說:“看!一只狗!”只要狗還在皮帶上,孩子們還能看見那只狗,他們還會指著它。然而,一旦所有的皮帶都分開了,狗就跑掉了,不管有多少小孩指著它。
一旦最后一個強指針(Leash)不再指向一個對象,該對象將被釋放,所有弱指針都將被歸零。
3.保留=強
它被保留,舊值被釋放并被賦值,它指定了應該發送的新值。 保留賦值和發送的舊值-釋放 保留和堅強是一樣的。 蘋果說,如果你寫,保留,它將自動轉換/工作像強者。 像“alloc”這樣的方法包括一個隱含的“保留”。
@property (nonatomic, retain) NSString *name;@synthesize name;
4.分配
賦值是默認的,只需執行變量賦值。 “賦值”是一個屬性,它告訴編譯器如何合成屬性的setter實現 我會使用賦值來表示C基元屬性,而弱引用用于對象-C對象的弱引用。
@property (nonatomic, assign) NSString *address;@synthesize address;

TA貢獻1828條經驗 獲得超13個贊
strong
retain
weak
assign
這意味著,你可以簡單地替換它們。
不過assign
weak
delegateAssign
delegateWeak
-dealloc
// Our delegate is deallocating and there is no other strong ref.- (void)dealloc { [delegateWeak doSomething]; [delegateAssign doSomething];}
weak
delegateWeak
delegateAssign
// Our delegate is deallocating and there is no other strong ref.- (void)dealloc { [delegateWeak doSomething]; // Does nothing, already nil. [delegateAssign doSomething]; // Successful call.}
weak
- 3 回答
- 0 關注
- 557 瀏覽
添加回答
舉報