我被这个程序的输出结果弄糊涂了。
#import <Foundation/Foundation.h>
#import "Human.h"
int main(int argc, const char * argv[]) {
Human *human = [Human new];
[human release];
[human sayHello];
return 0;
}
类本身是
@implementation Human
-(void)sayHello {
NSLog(@"Hello");
}
-(void)dealloc {
NSLog(@"Deallocated");
[super dealloc];
}
@end
结果是输出结果
主要问题是为什么方法sayHello
被执行,尽管对象本身被破坏,因为它的保留计数是0
通过发送release
消息设置的?更重要的是,如果我通过调试器完成程序流程,应用程序将崩溃,因为human
指针不再是对象。这里发生了什么事?
PS ARC 已关闭
提前致谢。