RELEASE_SAFELY 是啥意思,为啥它在 xcode4 中不起作用?

Posted

技术标签:

【中文标题】RELEASE_SAFELY 是啥意思,为啥它在 xcode4 中不起作用?【英文标题】:What does RELEASE_SAFELY mean and why does it not work in xcode4?RELEASE_SAFELY 是什么意思,为什么它在 xcode4 中不起作用? 【发布时间】:2011-03-24 14:20:33 【问题描述】:

RELEASE_SAFELYRELEASE_CF_SAFELY 是什么意思?好吧,是用来释放对象的,为什么不用[obj release]呢?

除了我尝试在 xcode 4 中使用它,但我遇到了 buid 错误:

Undefined symbols for architecture i386:
  "_RELEASE_SAFELY", referenced from:
      -[AdressBookModel search:] in AdressBookModel.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

我可以只使用[obj release] 吗?你会考虑什么?

【问题讨论】:

【参考方案1】:

RELEASE_SAFELY 不是函数而是宏,通常定义如下:

#define RELEASE_SAFELY(__POINTER)  [__POINTER release]; __POINTER = nil; 

(我认为它不是SDK的一部分,但必须在每个项目中单独声明。而且我认为它与XCode版本无关。)

所以它首先调用release,然后另外将变量设置为nil。这是一种很好的做法,因为它可以防止重复释放或访问已释放的实例。

您的代码似乎认为它是一个函数(而不是宏)。可能编译器会警告你它还没有被声明。

解决方法是将上述宏定义放在适当的头文件中。

【讨论】:

以上是关于RELEASE_SAFELY 是啥意思,为啥它在 xcode4 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

当它在标准输出上说“创建模式......”时,“git commit”是啥意思?

工人 puma 日志提前终止是啥意思,为啥会发生?

“语义”是啥意思?为啥“移动语义”这样命名,而不是任何其他术语?

表达“m |= Modifier.PUBLIC”是啥意思,为啥要这样做? [复制]

GCM 的响应是啥意思,为啥通知不起作用?

Linux中挂载是啥意思?为啥要挂载呢?又为啥要改变挂载点呢?