我想將NSString轉換爲const char *以便訪問sqlite數據庫。當將格式化的NSString轉換爲UTF8時,iPhone應用程序崩潰char *
這工作:
NSString *queryStatementNS = @"select title from article limit 10";
const char *queryStatement = [queryStatementNS UTF8String];
這導致模擬器崩潰(沒有任何堆棧跟蹤):
NSString *queryStatementNS = [NSString stringWithFormat:@"select title from article limit %d", 10];
const char *queryStatement = [queryStatementNS UTF8String];
可有人告訴我,在字符串中stringWithFormat方法的變化使轉換爲UTF8(或使用cStringUsingEncoding:NSASCIIStringEncoding到ASCII)崩潰?在沒有將任何參數傳遞給stringWithFormat時也會發生同樣的崩潰。莫名其妙地與內存管理有關嗎?
stringWithFormat是否調用與UTF8String方法不同的地方或方法?如果是這樣,第二個例子中的autorelease對象queryStatementNS可能已經發布。第一個例子使用一個常量,它不是一個autorelease對象。 – hotpaw2 2010-10-15 18:25:24
這一切都在一個地方,就像在這個例子中一樣。但是,我添加了[queryStatementNS retain];在這些線之間,現在它工作。 – Sven 2010-10-16 08:17:10