objc:避免协议方法名称冲突?

KON*_*ONG 3 iphone objective-c

我用方法名定义协议是:

   - (id)initWithDelegate:(id <Foo>)delegate;
Run Code Online (Sandbox Code Playgroud)

在我的项目中,还有第三方协议(在不同的类中):

   - (id)initWithDelegate:(NSObject *)delegate;
Run Code Online (Sandbox Code Playgroud)

在另一个导入两个协议的类中,我只使用第二种方法:

id thirdPartyObject = [[ThirdPartyClass alloc] initWithDelegate:self];
Run Code Online (Sandbox Code Playgroud)

但XCode显示错误:self不符合<Foo>协议,而self不需要符合该协议.

如何避免这种命名冲突?

Mar*_*rra 5

更改方法的名称.

- (id)initWithFooDelegate(id<Foo>)delegate;
Run Code Online (Sandbox Code Playgroud)