使协议中的方法不可用

Mas*_*son 6 protocols objective-c nsobject ios

假设我正在创建一个带有自定义初始化程序的协议,我希望我的某些模型对象符合它.

@protocol SomeProtocol <NSObject>
- (instancetype)initWithContext:(Context *)context;
@end
Run Code Online (Sandbox Code Playgroud)

在这样做时,我也希望-[NSObject init]无法使用.我过去完成的方式是在标题中声明类似的内容:

- (instancetype)init NS_UNAVAILABLE;

要么:

- (instancetype)init __attribute__((unavailable("Use -initWithContext:")));

有没有办法在协议中包含类似上面的内容,以便符合此协议的任何类都将使其默认初始化方法不可用?

为了明确,我想知道以下内容是否有效:

@protocol SomeProtocol <NSObject>
- (instancetype)initWithContext:(Context *)context;
- (instancetype)init __attribute__((unavailable("Use -initWithContext:")));
@end
Run Code Online (Sandbox Code Playgroud)