iPa*_*rJr 0 iphone macos null memory-management
有人可以在mac计算机上然后在iphone设备上向我解释这个程序的输出.
我创建了一个不含任何东西的普通Foo类,Foo.h:
#import <Foundation/Foundation.h>
@interface Foo : NSObject {
}
@end
Run Code Online (Sandbox Code Playgroud)
和Foo.m:
#import "Foo.h"
@implementation Foo
@end
Run Code Online (Sandbox Code Playgroud)
要在Mac上测试它,我使用这个main.m:
#import "Foo.h"
int main(int argc, const char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Foo *myFoo;
[myFoo description];
printf("%p\n", myFoo);
[myFoo release];
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个程序输出:
0x0
Run Code Online (Sandbox Code Playgroud)
但是在iphone上它会直接崩溃.
谢谢.
你没有发送版本到nil变量.就像在C中一样
Foo *myFoo;
Run Code Online (Sandbox Code Playgroud)
创建一个未初始化的堆栈变量,它可以包含任何垃圾值.在你的Mac上,它可能会发生值为0(零),而在iPhone上它会发生一些导致崩溃的其他值.
归档时间: |
|
查看次数: |
1593 次 |
最近记录: |