NS_DESIGNATED_INITIALIZER
1.作用:
用来指定init初始化方法为指定构造方法
可用于interface 或者extension
- (instancetype)initWithTitle:(NSString*)title icon:(NSString*)iconNS_DESIGNATED_INITIALIZER;
注意:如果用在类方法中,则报错。
![](https://img.haomeiwen.com/i4241355/598803aa94d6da0b.png)
2.实现中,需要重写init方法调用指定构造方法(designated method)
- (instancetype)init {
if(self= [self initWithTitle:nilicon:nil]) {
}
returnself;
}
3.使用场景
如果需要指定构造方法
4.使用的地方
AFN的AFHTTPRequestOperationManager,通过url初始化一个操作管理者
- (instancetype)initWithBaseURL:(NSURL*)urlNS_DESIGNATED_INITIALIZER;
AVFoundation 的 AVAssetExportSession通过一个asset初始化一个session
- (nullableinstancetype)initWithAsset:(AVAsset*)asset presetName:(NSString*)presetNameNS_DESIGNATED_INITIALIZER;
...
需要更深层的了解参考:实现原理
网友评论