char bytes[] = { 1, 2, 3, 4};
NSString * f = [[NSString alloc] initWithBytes:bytes length:4 encoding:NSASCIIStringEncoding];
[f release];
NSLog(@"%@", [f description]); // Why no 'message sent to deallocated instance "?
[f release];
它只给我警告,没有崩溃。
Test1(26194,0xacf302c0) malloc: *** error for object 0x757c2f0: double free
最佳答案
因为NSString
很奇怪。 (这是一个类集群,并且免费桥接到CFString
。)
在更普通的对象上尝试相同的操作(例如NSObject
,对于最简单的情况),您会发现事情的表现超出预期。 (但是请注意,除非启用了保护malloc或类似的调试选项,否则您可能根本不会收到“发送到已释放实例的消息”错误。)
关于iphone - 为什么 objective-c 中的以下代码无法模拟“发送到已释放实例的消息”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13775235/