我应该发布@property(非原子,复制)吗?

ofi*_*rbt 0 iphone memory-management objective-c

我正在使用UISearchBar它的一个属性, text声明如下:

摘要:当前或开始搜索文本.
声明:@property(nonatomic, copy) NSString *text;

我知道规则是释放你使用过的东西+alloc,+new或者-copy.

我做了:

NSString *searchText = searchBar.text;
Run Code Online (Sandbox Code Playgroud)

和:

[searchText release];
Run Code Online (Sandbox Code Playgroud)

我得到了一个很好的EXC_BAD_ACCESS消息.当我删除释放行时,EXC_BAD_ACCESS消息停止显示,因此我认为它是错误源.

问题:我不应该发布searchText,因为它来自使用副本的属性?

Rob*_*ier 8

不,你不应该在这里使用release.在这种情况下,"副本"指的是如何实现setter,而不是getter.拨打的电话(-text)不包含"复制"一词,因此您不应发布结果.