Objective-C:如何防止调用非默认初始值设定项?

Boo*_*oon -1 objective-c initializer

我创建了一个不同的init方法,并希望它是指定的初始化程序而不是标准-init.如何防止客户端代码使用实例化类-init

例如

/* everyone must call this */
- (id)initWithInfo:(NSDictionary *)info {
  self = [super init];
  if (self) {
      _info = info;
  }

  return self;
}

/* Don't want anyone to be able to create this using init */
Run Code Online (Sandbox Code Playgroud)

Ano*_*dya 5

init来自于等级NSObject.每个班级都有init.

因此,您无法删除超类的方法.

此外用户/开发者可以使用任何其他的方式来创建新的对象一样new,initWith....