1 memory-management objective-c
这是我的自定义类:
PolygonShape : NSObject {
int numberOfSides;
int minimumNumberOfSides;
int maximumNumberOfSides;
}
Run Code Online (Sandbox Code Playgroud)
我的自定义init方法:
- (id)initWithNumberOfSides:(int)sides minimumNumberOfSides:(int)min maximumNumberOfSides:(int)max {
if (self = [super init]) {
[self setMinimumNumberOfSides:min];
[self setMaximumNumberOfSides:max];
[self setNumberOfSides:sides];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我的dealloc方法:
- (void) dealloc {
NSLog("Calling dealloc");
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
我崩溃的示例代码:
PolygonShape *shape1 = [[PolygonShape alloc] initWithNumberOfSides:6 minimumNumberOfSides:5 maximumNumberOfSides:9];
[shape1 release];
Run Code Online (Sandbox Code Playgroud)
我已经分配了一个PolygonShape,将保留计数增加1,然后释放应该将它减少到0并调用dealloc,将该消息打印到NSLog,但我得到EXC_BAD_ACESS.我可以在创建后访问和更改对象中的字段,直到有效为止.非常感谢您的帮助!
NSLog("Calling dealloc");
Run Code Online (Sandbox Code Playgroud)
您正在传递常规C字符串,而不是NSString.你需要这样做:
NSLog(@"Calling dealloc");
Run Code Online (Sandbox Code Playgroud)
您的编译器应该警告您传递不兼容的指针.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |