“id <protocolname> variableName”类型属性</protocolname>的内存管理

时间:2010-05-19 08:08:12

标签: iphone objective-c memory-management properties

我遇到以下类型属性的问题:

id<ProtocolName> variableName;
.....
.....
@property (nonatomic, retain) id<ProtocolName> variableName;

我可以正常访问和使用它们,但是当我尝试调用

[variableName release];

我收到编译器警告:

'-release' not found in protocol(s)

我是否需要在界面中定义一个release方法,或者如何释放为变量保留的内存?

谢谢!

3 个答案:

答案 0 :(得分:3)

release在NSObject协议中,因此您可以将其声明为id<ProtocolName, NSObject>以在类型系统中工作或将其强制转换为普通id以阻止其类被类型检查。

答案 1 :(得分:3)

让你的协议采用NSObject。

@protocol ProtocolName <NSObject>
...

答案 2 :(得分:1)

您始终可以将NSObject添加到协议列表中。