oc协议
2015-11-17 18:27
267 查看
协议的定义语法:
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.hOc代码
#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)
相关文章推荐
- 苹果开源三个加密库
- 探索与利用(Explore and exploit) E&E
- PowerTeam--Alpha阶段个人贡献分及转会人员
- Shell脚本———判断文件
- Android 6.0 读取Mac地址
- iOS之keychian的应用
- 【Java小项目】一个Socket连续传输多个文件
- 从MS Word&Excel超链接,初始化无法读取cookie
- 九度oj-1094-String Matching
- [LeetCode]91. Rotate List旋转链表
- liyte
- POJ_1979:Red and Black
- [LeetCode]91. Rotate List旋转链表
- 学习python 的一个bug
- 如果公司限制了你的网速怎么办
- QFileDialog添加控件
- 解决url中包含中文导致的乱码
- C++ 学习
- linux有趣的命令
- GC heap 简述