간단한 코드를 작동하는 것은 이상한 동작이 발생합니다 :은 오브젝티브 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;
}
두 번째 NSLog()
인쇄해야합니다 "메시지가 해제 된 객체로 전송 retainCount = 0x103eb0을". Leopard를 사용하면 모든 것이 정상적으로 작동하지만 Snow Leopard에서는 두 번째 NSLog가 여전히 1
을 인쇄합니다.
Snow Leopard 버전의 Xcode에 버그가 있습니까?
메모리는 "파괴 된 것으로 표시"되어 있지 않으므로 "다른 것으로 다시 사용할 수 있습니다". 그러나 해방 될 때 해방 된 메모리를 명시 적으로 덮어 쓸 수있는 것은 없습니다. – Ken