返回自动释放对象的类方法

时间:2011-02-08 15:43:24

标签: iphone objective-c memory-management class-method

我一直关注iTunes U上的iPhone开发视频,到目前为止一直很好。我想我理解得很好。

问题是,在他们提供的示例中,他们从不创建自定义类方法,就像您在某些基础类上使用的那些(如[NSString string])所以我不确定如何创建我的自己的类方法返回我的类的自动释放实例。

我确实知道如何使用实例方法创建一个保留对象,但我宁愿使用类方法,因为我更喜欢它,我只是不确定这个实现是否最适合返回一个自动释放的对象:

+ (PhotoViewController*)initWithImageView:(UIImageView*)imageView
{
    PhotoViewController *toreturn = [[PhotoViewController alloc] init];
    toreturn.imageview = imageView;
    [toreturn autorelease];
    return toreturn;
}

非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:6)

类方法可以根据需要返回保留或自动释放的对象,并且您的代码可以完全正确地返回自动释放的对象。

但是,您应该以不同的方式命名您的方法。由于您的方法以init开头,这意味着它正在初始化alloc ed对象(因此应该是实例方法而不是类方法)。我建议命名方法photoViewControllerWithImageView:,如果它将返回一个自动释放的对象。

另外,我可能会把它写成return [toreturn autorelease];,但我想这是我的风格偏好。

答案 1 :(得分:2)

我认为在访问toreturn属性之前检查nil是否为imageview是一种很好的做法。