不想让使用new、init来初始化某个方法,方便协作开发或者害怕自己忘记可以使用NS_UNAVAILABLE来禁止new、init的调用。
@interface Person : NSObject
+(instancetype)new NS_UNAVAILABLE;
-(instancetype)init NS_UNAVAILABLE;
-(instancetype)initWithName:(NSString *)name;
@end
@implementation Person
-(instancetype)initWithName:(NSString *)name{
self = [super init];
if(self){
NSLog(@"person-%@",name);
}
return self;
}
@end
//初始化的时候就只能使用initWithName
Person *person = [[Person alloc] initWithName:@"NANA"];
非要使用init方法或者new方法,会报错。