Objective-C 中有两种初始化对象的方法,即:
1) AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
2) AVCaptureSession *session = [AVCaptureSession new];
看起来他们在做同样的工作。它们之间有什么区别?还是"new"只是iOS5的新奇之处?
非常感谢您的回答,
阿尔乔姆
最佳答案
new
是执行 alloc/init 的快捷方式,它应该适用于任何对象,但这主要是 Smalltalk 的遗留问题,并且 new
调用从不接受参数,因此您再也看不到它被太多使用了。
所以两者应该是相同的,这是一个新奇之处,但不是 iOS 5 的。
编辑:除此之外,new
在 NSObject
上定义为调用 alloc
然后调用 init
的东西,并且自 Mac OS X 10.0(这是开始)以来就可用。就 Apple 的文档而言,时间)。
关于objective-c - Objective-C 中初始化对象的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928281/