我在與以下類型的性能問題:內存管理「ID <ProtocolName> VARIABLENAME」類型屬性
id<ProtocolName> variableName;
.....
.....
@property (nonatomic, retain) id<ProtocolName> variableName;
我可以訪問並使用它們就好了,但是當我嘗試調用
[variableName release];
我得到的編譯器警告:
'-release' not found in protocol(s)
我需要來定義界面的釋放方法,或者怎麼做我釋放爲變量保留的內存?
謝謝!
這假設你可以控制協議定義 - 但是如果你這樣做,是的,這是一個很好的解決方案。 – Chuck 2010-05-19 08:15:56
在這種情況下,我確實控制了協議定義 - 添加了NSObject並且它完美地工作。謝謝! :) – Malakim 2010-05-19 08:21:09
只是略微擴大這一點。如果一個協議'AProtocol'不採用'NSObject'並且你收到一個類型爲'id'的對象,你就不能認爲該對象對'-retain'和'-release'做出了響應。 Objective-C中沒有任何東西表示一個對象*有*可以從'NSObject'繼承。 'NSObject'不是Objective-C語言的一部分,它是Foundation框架的一部分。 –
JeremyP
2010-05-19 15:28:12