我想将自定义对象分配给实例变量。
这是代码:
- MyController.h/.m
#import "CustomData.h"
@interface MyViewController : NSViewController
@property (retain) CustomData* theData;
- (void)aRandomMethod;
@end
@implementation MyViewController
@synthetize theData;
- (void)aRandomMethod {
NSData* rawData = [someOtherObject someOtherMethod];
// option 1
self.theData = [[CustomData alloc] initWithData:rawData];
// option 2
CustomData* _theData = [[Custom alloc] initWithData:rawData];
// option 3
self.theData = [[[CustomData alloc] initWithData:rawData] autorelease];
// option 4
theData = [[CustomData alloc] initWithData:rawData];
// ... later code calls some methods on theData or _theData, not useful here.
}
@end
在 Xcode 中运行分析功能时,它告诉我选项 1 和 2 有一个“泄漏的对象未在以后引用...”,但选项 3 和 4 没有。看来我autorelease
在使用时需要自定义对象二传手。我知道autorelease
在方法中返回我们拥有的对象时需要使用它。
你能解释一下每个选项为什么是错还是对?谢谢。