如何通过Objective-C中的接口创建的对象调用方法

时间:2010-02-15 10:34:35

标签: objective-c

我需要通过接口创建的对象调用方法,即

id<MyProtocol>obj;

现在我已经在我的主类中创建了这个obj,我没有实现这个协议的方法,但是我需要访问已经在其他类中实现的方法。我现在调用方法如下

[obj load]; 

在我的主要类applicationDidFinishLaunching中,但我无法访问该方法? 请告诉我通过协议调用方法的正确方法......

2 个答案:

答案 0 :(得分:2)

协议什么都不实现。它仅描述了对象应响应的一组消息。您的obj对象属于某个类。该类需要实现MyProtocol中描述的方法。

修改

协议不是由特定类实现的。声称符合协议的任何类都必须实现其方法。声称符合协议的任何对象必须属于实现其方法的类。

在您的情况下,objClassB,因此ClassB必须直接或通过继承来实现MyProtocol描述的方法。

答案 1 :(得分:0)

[obj load]没问题。如果要关闭编译器,可以将其转换为id

[(id)obj load];

但是如果你知道你需要调用-load方法,也许你应该将-load方法添加到协议中,或者制作另一个具有-load方法的协议,例如

@protocol Loadable
-(void)load;
@end

...
id<MyProtocol, Loadable> obj;