2011-09-06 66 views

回答

9

簡短的回答:不,這是不可能做到這一點。您最多可以強制實施方法和屬性。

+0

謝謝魯迪,這只是一個想法。當我執行一個非常奇怪的設計範例時。任何工作? – doNotCheckMyBlog

+2

您不應該關心哪些實例變量對象會發生使用。聲明屬性並讓實現該協議的類獲取並設置它,但是他們想要。 – Tommy

+0

沒有解決方法。我不知道任何可以強制某個實例變量出現的東西。嘗試使用屬性作爲替換。 –

3

你不能在@protocol中聲明ivars,但你可以強制符合類實現一個存取器和一個增變器,這聽起來像你正在得到的。例如:

@protocol Priced 
@property(assign, nonatomic) double price; 
@end 

@interface Carrot : NSObject <Priced> { 
    double price; 
} 
@end 
@implementation Carrot 
@synthesize price; 
@end 
+0

是啊我知道有方法A.K.A.行爲。但是想到迫使程序員添加一個必須的變量。謝謝 – doNotCheckMyBlog

1

您可以使對象成爲具體的子類。這將是確保它們包含所需內部組件的唯一方法。當然,如果你對這些類是如何在內部存儲數據感興趣的話......這違反了一些範例。

+0

+1,儘管子類(用戶)類在Objective-C中似乎比(比如說)C++少得多,但「@ protocol」可能不是OP需要的正確工具。 – Ephemera

+0

我傾向於經常創建子類......我認爲很多可可/ iOS程序員使用他們熟悉的工具,這是可以理解的...給出的比C++和Java已經在大學中與OOP一起教授〜 20年... –