【发布时间】:2011-07-18 00:25:16
【问题描述】:
根据以下代码,请指教
NSString *str= [[NSString alloc] initWithString:@"Hello world"];
NSLog(@"Length: %lu\n", [str length]); // 11
NSLog(@"Retain count is %lu\n", [str retainCount]); //1152921504606846975
[str release];
NSLog(@"%lu\n", [str length]); // 11
NSLog(@"Retain count is %lu\n", [str retainCount]); //1152921504606846975
最初我想知道为什么这个数字这么大,但后来看到了post explaining it。让我问这个......为什么无论我使用
%d还是%lu,这个数字都会发生很大变化。最初,我使用%d,但收到警告说“转换指定类型 int 但参数的类型为 NSUInteger(又名无符号长)。修复方法是将%d更改为%lu” em>为什么保留计数不减少?在发送
strrelease后,大数字仍然显示不变为什么在发送
release后,我仍然可以访问str?
【问题讨论】:
标签: objective-c memory-management