首页 > 其他 > 详细

Protocols

时间:2014-07-25 14:15:41      阅读:465      评论:0      收藏:0      [点我收藏+]

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

Protocols,布布扣,bubuko.com

Protocols

原文:http://www.cnblogs.com/SuuuperPig/p/3867730.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!