我在与以下类型的性能问题:内存管理“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