0 cocoa memory-management objective-c
Objective-C中最简单的代码会导致奇怪的行为:
#import Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSObject *obj = [[NSObject alloc] init];
NSLog(@"retain count %d",[obj retainCount]);//print 1
[obj release];//obj deallocated
NSLog(@"retain count %d",[obj retainCount]); //still printing 1 in Snow Leopard! Why??
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第二个NSLog()应该打印"message retainCount send to freed object = 0x103eb0".如果你使用Leopard一切正常,但在Snow Leopard中,第二个NSLog仍然可以打印1.
这是雪豹版Xcode中的一个错误吗?
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |