【发布时间】:2010-07-11 12:52:40
【问题描述】:
我来自 java 背景,我尝试使用类似 java 接口的协议。
在java中,你可以让一个对象实现一个接口并将它传递给这样的方法:
public interface MyInterface {
void myMethod();
}
public class MyObject implements MyInterface {
void myMethod() {// operations}
}
public class MyFactory {
static void doSomething(MyInterface obj) {
obj.myMethod();
}
}
public void main(String[] args) {
// get instance of MyInterface from a given factory
MyInterface obj = new MyObject();
// call method
MyFactory.doSomething(obj);
}
我想知道是否可以用 Objective-c 做同样的事情,也许用其他语法。
我找到的方法是声明一个协议
@protocol MyProtocol
-(NSUInteger)someMethod;
@end
然后我的对象将“采用”该协议并以我可以编写的特定方法:
-(int) add:(NSObject*)object {
if ([object conformsToProtocol:@protocol(MyProtocol)]) {
// I get a warning
[object someMethod];
} else {
// other staff
}
}
第一个问题是如何删除警告,但在任何情况下,其他调用者仍可能将错误的对象传递给类,因为检查是在方法内部完成的。 你能指出一些其他可能的方法吗?
谢谢 莱昂纳多
【问题讨论】:
标签: java objective-c interface protocols