我有A
類,它揭示了一種獲取和設置Foo
類型的對象的方法。在屬性的說法,我一般聲明這在界面:如何聲明@property但是防止創建它的ivar?
@property (nonatomic, strong) Foo * foo;
這(在現代ObjC)同時生成訪問器和用於存儲的實例變量,_foo
。
如果我想在訪問器中進行自定義工作,我可以自己實現其中的一個或兩個。但是如果我不僅想做定製工作,我其實不想要伊娃?換句話說,我正在用Foo對象做其他事情,就像來回交給另一個我與之合成的內部對象。我實際上並不需要在A
的實例中保留foo
的存儲空間。
好像我有兩個選擇:
- 申報財產,同時實現存取,並簡單地忽視的事實是編譯器爲
_foo
創建存儲,而從不使用它。 - 明確聲明我的訪問者:
- (Foo *)foo
和- (void)setFoo:(Foo *)foo
在接口中,就像我在前現代的ObjC中使用的一樣。
第一個在運行時看起來不雅觀,第二個在聲明中似乎不夠優雅(我現在可能有混合了屬性和屬性的訪問器)。
有沒有辦法來聲明一個屬性,並將其作爲純粹的聲明?
你是對的!感謝文檔指針,我錯過了。我發現這種行爲對我的口味有點神奇,但很高興知道這一點。 –
正如你可能在文檔中已經注意到的那樣,你可以聲明屬性爲'readonly'或'writeonly'並覆蓋該訪問器並避免創建該變量。 – nhgrif