3
的Xcode 7 added的__kindof
裝飾到對象的聲明:使用__kindof與非集合類型
KindOf。聲明爲
__kindof
類型的對象向編譯器表示「某種X」,並且可以在泛型參數中使用,以將類型約束到特定類或其子類。使用__kindof
允許約束比顯式類更靈活,並且比僅使用id
更明確。
__kindof
最明顯的用例是使用集合類型來明確指定特定集合中的對象類型。從UIStackView
頭:
- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views; // Adds views as subviews of the receiver.
@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews;
此明確指出,各NSArray
將包含爲對象或UIView
繼承。
但也有一些情況下,__kindof
用在非集合類型的對象,如在UIStoryboardSegue
頭:
@property (nonatomic, readonly) __kindof UIViewController *sourceViewController;
@property (nonatomic, readonly) __kindof UIViewController *destinationViewController;
什麼非集合類對象__kindof
裝飾的變化?
這是一個關於Objective-C的問題。您使用的IDE並不真正屬於您的問題。 – rmaddy
@rmaddy是否有一個更好的標記,我應該使用一個對象裝飾器的東西,只能在特定版本的IDE或編譯器中使用?或者你覺得[tag:objective-c]標籤對於這個問題是足夠的。 – JAL
我看不到任何其他標籤的原因。標題和問題使這一切足夠清楚。使用額外的標籤不會再顯示出來。 – rmaddy