标签:java os io re c 代码 .net res
Protocol 相当于 .Net 和 Java 中的 interface
protocol 声明
@protocol ProtocolName
// list of methods and properties
@end
protocol 中可以声明实例属性和方法,也可以声明class属性和方法(相当于 .Net 和 Java 中的静态属性和静态方法)
protocol 的注入:
@interface ClassName : NSObject
@property (weak) id <ProtocolName> obj;
@end
默认情况下,protocol中定义的方法和属性都是required的,继承了protocol的类必须实现这些required的方法和属性。可以用optional关键字在protocol中定义一些不用必须实现的方法或属性
@protocol NothinProtocal
- someMethod;
@optional
- optionalMethod;
@end
在调用optional方法之前,需要先检查类对象是否实现了该方法,例如
if([Self.obj respondsToSelector:@selector(optionalMethod)]){
[self.obj optionalMethod];
}
因为respondsToSelector方法是在NSObject这个protocol中定义的,所以NothinProtocal需要继承NSObject. 否则上述代码会编译失败
protpcol的继承:
@protocol ProtocolName <NSObject>
...
@end
实现protocol:
@interface ClassName : NSObject <protocol1, protocol2, protocol3, ...>
...
@end
标签:java os io re c 代码 .net res
原文地址:http://www.cnblogs.com/SuuuperPig/p/3867730.html