2011-09-28 21 views
0

我有一個內存管理問題我無法在iOS上找到我的頭。我從SQLite數據庫獲取數據,其中一些單元格可能爲空。因此,爲了處理這種情況,我將[NSNull空]我的收件人如果爲空,或者值如果不是:發佈可以是[NSNull null]或不是的對象

NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? [NSNull null] : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)]; 

但後來如果我這樣做:

[email release]; 

分析儀不喜歡它,我認爲當對象實際上是[NSNull null]時,它會崩潰我的程序。

所以我已經試過:

(id) email == [NSNull null] ? nil:[email release]; 

但它不工作(仍然崩潰和分析儀不喜歡它)。有任何想法嗎?

在此先感謝

回答

0

我使用的是在這種情況下nil值。例如:

NSString *email = (const char *) sqlite3_column_text(statement, 6) == NULL ? nil : [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)]; 

在這種情況下,你可以安全地調用[email release]; // email can be NSString or nil,所有工作將根據您的需要。

+0

謝謝,零確實可以釋放。然而,我發現你可以告訴SQLite將什麼值放入一個空單元格,所以我只是選擇了一個空字符串而不是C NULL。節省我一些代碼! – chopchop

相關問題