jas*_*inh 4 memory-management objective-c ios
@property (retain) NSString *testString;
self.testString = [[NSString alloc] initWithString:@"aaa"];
[self.testString retain];
self.testString = [NSString stringWithString:@"a"];
[self.testString release];
[self.testString release];
Run Code Online (Sandbox Code Playgroud)
我们一行一行:
第2行:保留testString = 2的计数
第3行:保留计数testString = 3
第4行:保留计数testString = 1
第5行:保留计数testString = 0
第6行:它应该崩溃
即使testString
在CoreFoundation中还有其他东西,它最终也会消失.但该应用程序从未因此而崩溃.
有谁能解释一下?谢谢!
看到这段代码及其日志:
NSString *string1 = [NSString stringWithString:@"a"];
NSString *string2= @"a";
NSLog(@"String1: %p", string1);
NSLog(@"String2: %p", string2);
2012-03-22 13:21:49.433 TableDemo[37385:f803] String1: 0x5860
2012-03-22 13:21:49.434 TableDemo[37385:f803] String2: 0x5860
Run Code Online (Sandbox Code Playgroud)
如您所见[NSString stringWithString:@"a"];
,不创建新字符串,它使用字符串文字@"a".并且不能释放字符串文字.
尝试使用您的代码,NSMutableString
您将看到崩溃.
归档时间: |
|
查看次数: |
371 次 |
最近记录: |