首页 > 代码库 > [Objective-c 基础 - 3.4] protocol
[Objective-c 基础 - 3.4] protocol
A.概念
1.用来声明方法(不能声明成员变量)
2.只要某个类遵守了这个协议,相当于拥有了协议中得所有方法的声明
3.属性
(1)@required:默认,要求实现,不实现就会发出警告
(2)@optional:不要求实现
————MyProtocol.h--------------
1 @protocol MyProtocol 2 @required 3 - (void) test1; 4 5 @optional 6 - (void) test2; 7 8 - (void) test3; 9 10 @end
4.父类遵循的协议,子类也会继承
5.基协议
(1)一个协议遵守了另外一个协议,就可以拥有其所有声明的方法
————MyProtocol.h———————
1 #import <Foundation/Foundation.h>2 #import "MyProtocol.h"3 4 @protocol MyProtocol2 <MyProtocol>5 6 7 @end
(2)基协议<NSObject>
a..建议所有协议都遵循基协议
@protocol MyProtocol <NSObject>
b.动态遵守协议
Person<MyProtocol2> *p = [[Person alloc] init];
c.遵守多个协议
@interface Person : NSObject <MyProtocol, MyProtocol2>
6.协议和成员对象
===========Person.h====================
1 @interface Person : NSObject <MyProtocol]] >2 3 @property(nonatomic, strong) id<MyProtocol2> obj;4 5 @end
===========main.c======================
1 int main(int argc, const char * argv[]) {2 Person *p = [[Person alloc] init];3 Dog *d = [[Dog alloc] init];4 5 p.obj = d; // 警告,Dog没有遵守MyProtocol2协议6 7 return 0;8 }
7.@protocol
在.h可以先使用@protocol声明协议,在.m中再#import进来protocol的.h文件
==========Person.h=====================
1 #import <Foundation/Foundation.h> 2 3 @protocol MyProtocol; 4 @protocol MyProtocol2; 5 6 @interface Person : NSObject <MyProtocol]] > 7 8 @property(nonatomic, strong) id<MyProtocol2> obj; 9 10 @end
==========Person.m=====================
1 #import "Person.h" 2 #import "MyProtocol.h" 3 #import "MyProtocol2.h" 4 5 @implementation Person 6 - (void)test1 7 { 8 9 }10 11 - (void)test312 {13 14 }15 16 @end
[Objective-c 基础 - 3.4] protocol
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。