问题#1 :作为一项规则,如果我不需要,我永远不会释放对象。假设stringWithUTF8String本身有自动释放,我不必做“return [... autorelease]”,对吗?
-(NSString*)nonNullDBString:(const unsigned char*)value {
if(value == nil) {
return @"";
} else {
return [NSString stringWithUTF8String:(char *)value];
}
}
问题#2 :在我的班级中我有属性:“const uint8_t * bytes;”。在dealloc方法中,我必须调用“bytes = nil;”或者“free(bytes);”,或者什么都没有?
问题#3 :对于我的课程中的@property(非原子,保留)变量,dealloc'ing的最佳实践是什么,是“self.foo = nil;”或“ [foo releease](我现在在做什么)”。另外,我不想搞乱KVO问题,无论它们是什么......
答案 0 :(得分:1)
A1)对。你的代码片段是正确的。
A2)如果你malloc
编辑了它,那么请拨打free
(毕竟它是一个C)。无需执行foo = nil
- 从dealloc
返回时,您的对象将会死亡,没有人关心此指针值是什么。
A3)[foo release];
。