发布或不发布

Van*_*nel 1 iphone memory-management objective-c

我正在开发一个iPhone应用程序.

我有以下财产:

@property (nonatomic, retain) Point2D* endPoint;
Run Code Online (Sandbox Code Playgroud)

这是同一个类的方法:

- (id)initWithX:(CGFloat)x Y:(CGFloat)y;
{
    if (self = [super init])
    {
        endPoint = [[Point2D alloc] initWithX:x Y:y];

    ...
}
Run Code Online (Sandbox Code Playgroud)

最后是同一类的dealloc方法:

- (void)dealloc {
    [endPoint release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这段代码是否正确?

endPoint = [[Point2D alloc] initWithX:x Y:y];
Run Code Online (Sandbox Code Playgroud)

或许我必须在这里做自动释放.

bbu*_*bum 5

请阅读内存管理指南,因为它将解释所有这些以及更多内容.

简而言之,该代码是正确的.

如果你这样做self.endPoint = [... alloc/init ...],那么你需要自动释放或释放init以平衡额外的保留.