由于我对Objective-C和内存管理很陌生,我很好奇这段代码是否正常 -
首先,返回UIImageView的代码 -
-(UIImageView *)somethingAnimation {
UIImageView *something = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Something.png"]];
something.frame = CGRectMake(-100, -100, kSomethingWidth, kSomethingHeight);
return something; // released later by the Swarmer object
}
然后调用它的代码,其中UIImageView *在界面中声明了什么,然后这是在实现中 -
something = [controller somethingAnimation];
以后 -
[something release];
这是否正确释放了一切?似乎没有内存或崩溃问题。非常感谢您的帮助。
答案 0 :(得分:3)
Memory Management Programming Guide定义了一组命名约定,用于确定方法是应返回“拥有”对象还是自动释放对象。根据这些约定,名为-somethingAnimation
的方法应该肯定返回一个自动释放的对象。因此,在您的情况下,您应该返回[something autorelease]
,然后不再发布它。
答案 1 :(得分:2)
技术上有效,但这是不好的做法。你应该在退货之前自动退货。不要依赖别人知道释放它。