正如標題所述,爲什麼UIKit
代表(assign)
而不是(weak)
?爲什麼UIKit代表「分配」而不是「弱」?
例如見UIPopovercontroller.h
:
@property (nonatomic, assign) id <UIPopoverControllerDelegate> delegate;
至於我可以告訴這個規定沒有任何好處在弱保留財產,但有很多問題,其中的代表需要管理它自己的一生作爲代表。這是一個向後兼容性問題?
謝謝
正如標題所述,爲什麼UIKit
代表(assign)
而不是(weak)
?爲什麼UIKit代表「分配」而不是「弱」?
例如見UIPopovercontroller.h
:
@property (nonatomic, assign) id <UIPopoverControllerDelegate> delegate;
至於我可以告訴這個規定沒有任何好處在弱保留財產,但有很多問題,其中的代表需要管理它自己的一生作爲代表。這是一個向後兼容性問題?
謝謝
由於大多數這些屬性存在於iOS SDK支持的弱屬性之前。 weak
屬性僅在iOS 5.0及更高版本中受支持。
我不得不猜測,一旦iOS 4.x和更早版本是歷史記錄,它們將全部更新到weak
。
UIKit仍然沒有ARC構建,因此沒有一個UIKit類可以使用弱引用。即使是像UICollectionView這樣的新類也會因爲這個原因而爲它們的委託屬性賦值。
當類被解除分配時,'弱'指針也被設置爲'nil',這是'assign'唯一的實際區別' – jere
@jere更正確地說,弱指針被設置爲'nil'當它們引用的對象被釋放時。編輯:看起來像你編輯你的評論。 – rmaddy
我希望我們在iOS 8上有最好的運氣...... –