2011-03-24 44 views
3

RELEASE_SAFELYRELEASE_CF_SAFELY是什麼意思?好吧,這是爲了釋放物體,但爲什麼不使用[obj release]RELEASE_SAFELY是什麼意思,爲什麼它在xcode4中不起作用?

而且我想在Xcode 4使用它,但我遇到了錯誤,打造專業化:

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]呢?你會考慮什麼?

回答

4

RELEASE_SAFELY不是一個函數,但宏,通常是這樣定義:

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

(我認爲這不是SDK的一部分,但必須在每個項目單獨聲明,我不知道。認爲它有什麼用Xcode的版本。)

所以它首先調用釋放再另外設置變量。這是一個很好的做法,因爲它可以防止重複發佈或訪問解除分配的實例。

看來你的代碼認爲它是一個函數(而不是宏)。編譯器可能警告你它沒有被聲明。

解決的辦法是將上面的宏定義放在適當的頭文件中。