Ami*_*mir 3 memory-management properties objective-c
我想我错过了一些关于属性属性的东西.首先,我不明白之间的差别retain和assign.
如果我使用assign,属性是否将retain计数器增加1到setter和getter,我是否需要同时使用release它们?
以及如何做这项工作readwrite还是copy?从retain计数的角度来看.
我试图理解我在使用release属性(setter和getter)后需要使用的时间
@property (readwrite,assign) int iVar;
Run Code Online (Sandbox Code Playgroud)
是什么assign在这里做?
有什么区别:
@property (readwrite,assign) int iVar;
Run Code Online (Sandbox Code Playgroud)
和
@property (readwrite,retain) int iVar;
Run Code Online (Sandbox Code Playgroud)
和
@property (readwrite) int iVar;
Run Code Online (Sandbox Code Playgroud)
非常感谢...
Jer*_*myP 11
有什么不同:@property(readwrite,assign)int iVar; 到@property(readwrite,retain)int iVar; 到@property(readwrite)int iVar;
setter for @property (readwrite,assign) sometype aProperty;在语义上等同于
-(void) setAProperty: (sometype) newValue
{
ivar = newValue;
}
Run Code Online (Sandbox Code Playgroud)
如果放的话,上面的内容或多或少都会得到
@asynthesize aProperty = ivar;
Run Code Online (Sandbox Code Playgroud)
在你的实施中.
setter for @property (readwrite,retain) sometype aProperty;在语义上等同于
-(void) setAProperty: (sometype) newValue
{
[newValue retain];
[ivar release];
ivar = newValue;
}
Run Code Online (Sandbox Code Playgroud)
显然,保留或释放int是没有意义的,因此某些类型必须是id或者SomeObjectiveCClass*
setter for @property (readwrite,copy) sometype aProperty;在语义上等同于
-(void) setAProperty: (sometype) newValue
{
sometype aCopy = [newValue copy];
[ivar release];
ivar = aCopy;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不仅某些类型必须是一个客观的C类,而且它必须响应-copyWithZone:(或等效地,实现NSCopying).
如果省略保留或分配或复制,则默认为assign.
顺便说一句,我通过不考虑发生的锁定来简化上述内容,因为属性也没有指定nonatomic.
| 归档时间: |
|
| 查看次数: |
3202 次 |
| 最近记录: |