您的位置:首页 > 其它

oc协议

2015-11-17 18:27 267 查看



协议就是定义一组方法实现类必须实现这些方法,类似于java的接口和抽象类

协议的定义语法:

Java代码


@protocol 协议名 <父协议>

定义方法

@end

注:定义协议的关键字是@protocol,同时协议也是可以继承父协议的

协议中定义的方法还有两个修饰符:

@required:这个表示这个方法是其他类必须实现的,也是默认的值

@optional:这个表示这个方法对于其他类实现是可选的

协议的定义TestProtocol.h

Java代码


//oc协议的简单使用

@protocol TestProtocol <NSObject>

@required//必须实现

-(void)printlf;

+(void)getHotel;

@optional//可选实现

-(void)setHotel;

@end

#endif /* TestProtocol_h */


伦理片 http://www.dotdy.com/

文件TestExtends.h

Oc代码


#import "TestProtocol.h"

@interface TestExtends: NSObject<TestProtocol>{

NSString* name;

}

@property NSString *name; //类似set和get方法

//@property name;

-(void)setName:(NSString*)newName;//定义方法

-(id)initWithC:(NSString*)newName;//定义构造方法

@end

#endif /* TestExtends_h */

TestExtends.m文件

Java代码


#import "TestExtends.h"

@implementation TestExtends

@synthesize name;

-(void)setName:(NSString*)newName{

NSLog(@"调用父类的setName方法");

}

+(void)getHotel{

NSLog(@"getHotel");//必须实现的方法

}

-(void)printlf{

NSLog(@"printlf");//必须实现的方法

}

-(void)setHotel{

NSLog(@"setHotel");//可选的方法

}

-(id)initWithC:(NSString *)newName{

if (self==[super init]) {

name=newName;//

NSLog(@"父类的构造方法被调用。。。。");

}

return self;

}

@end

影音先锋电影 http://www.iskdy.com/
mian文件

Java代码


TestExtends* te=[[TestExtends alloc] init];

[te setName:@"Object-c"];

NSLog(@"简单的实现");

[te printlf];<span style="font-family: Menlo;"> </span>//调用协议的方法

运行结果:

2015-11-04 23:04:40.179 test_01[1432:80295] 调用父类的setName方法

2015-11-04 23:04:40.180 test_01[1432:80295] 简单的实现

2015-11-04 23:04:40.180 test_01[1432:80295] printlf

(lldb)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: