目标C:对象的初始化

Con*_*rot 1 objective-c

如果我想创建一个UIImage,那么下面两行代码的区别是什么:

UIImage *img = [UIImage imageWithCGImage:cgImage];

UIImage *img = [[UIImage alloc] initWithCGImage:cgImage];
Run Code Online (Sandbox Code Playgroud)

这只是"同一个目的,不同手段"的案例吗?

jsz*_*ski 5

imageWithCGImage:返回一个自动释放的实例,同时initWithCGImage:返回一个您必须自己释放的图像.通常,您可以依靠类方法返回自动释放的对象,而任何实例init方法都返回必须释放的对象.

如果您使用的是ARC代码,它们基本上会做同样的事情,但是请参阅此相关问题以获取更多信息:使用ARC,有什么更好的:alloc或autorelease initializers?

  • @ConnorLirot这个问题可能有所帮助:http://stackoverflow.com/questions/9086913/objective-c-why-is-autorelease-autoreleasepool-still-needed-with-arc (2认同)