我試圖將NSString
值從NSMutableArray
複製到一個新變量中。 NSString stringWithString
返回NSString
與我的數組中的對象具有相同的內存地址。爲什麼?爲什麼NSString stringWithString返回指向複製字符串的指針?
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSMutableArray *arr = [NSMutableArray arrayWithObject:@"first"];
NSLog(@"string is '%@' %p", [arr objectAtIndex:0], [arr objectAtIndex:0]);
// copy the string
NSString *copy = [NSString stringWithString:[arr objectAtIndex:0]];
NSLog(@"string is '%@' %p", copy, copy);
}
return 0;
}
不知道爲什麼會發生這種情況,但是您是否嘗試過'NSString * copy = [[arr objectAtIndex:0] copy];' – Ecarrion 2012-08-09 19:47:38
我有,它有相同的結果 - 內存地址匹配。 – joshuapoehls 2012-08-09 19:54:08
我需要這樣做的原因是因爲在我的真實應用程序中,該數組作爲參數傳遞給我的方法,並在稍後處理。當它被丟棄時,即使我已經將它「複製」出陣列,我也正在丟失我的NSString。 – joshuapoehls 2012-08-09 19:55:30