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

Joã*_*nho 3 iphone memory-management objective-c class-method

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

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

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

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

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

pau*_*ley 6

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

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

此外,我可能会写它,return [toreturn autorelease];但我想这是我的风格偏好.

  • 类方法根本不应该以`init`作为前缀,但Apple的指南只涵盖以`alloc`或`new`开头或包含单词`copy`的方法名称. (2认同)