国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

protocol(協議)

2019-11-14 19:11:11
字體:
來源:轉載
供稿:網友
 
  • 可以用來聲明一大堆方法(不能聲明成員變量)
  • 只要某個類遵守了這個協議,就相當于擁有這個協議中的所有方法聲明
  • 只要父類遵守了某個協議,就相當于子類也遵守了
 
//定義一個名叫MyPRotocol的協議
MyProtocol.h
@protocol MyProtocol <NSObject>
    @required//要求實現,不識閑會發出警告,如果什么都不寫,默認是@required
-(void) test;
-(void) test2;
    @optional//不要求實現
-(void) test3;
@end
 
Person.h
@protocol MyProtocol;//協議的提前聲明,類似@class
@interface Person : NSObject <MyProtocol>
 
@end
 
Person.m
#import  MyProtocol.h;
@implementation Person 
-(void) test{
 
}
-(void) test2{
 
}
@end
 
  • 一個協議可以遵守其他多個協議,多個協議之間用逗號 隔開
  • 一個協議遵守了其他協議,就相當于擁有了其他協議中的方法聲明

@protocol 協議名稱 <協議1, 協議2>

@end

1》類遵守協議:
@interface 類名 : 父類名<協議名稱1,協議名稱2>
@end
2》協議遵守協議:
@protocol 協議名稱 <其他協議名稱1,其他協議名稱2>
@end

1. 基協議

  • NSObject是一個基類,最根本最基本的類,任何其他類最終都要繼承它
  • 其實還有一個協議,名字也叫NSObject,它是一個基協議,最根本最基本的協議
  • NSObject協議中聲明很多最基本的方法,比如descriptionretainrelease
  • 建議每個新的協議都要遵守NSObject協議
要求obj3保存的對象必須是遵守MyProtocol這個協議;
NSObject<MyProtocol> *obj3;
id<MyProtocol> obj3;
要求obj4,保存的對象必須遵守MyProtocol3,并且繼承了Person
Person<MyProtocol3> *obj4;
@property中聲明的屬性也可用做一個遵守協議的限制
@property (nonatomic,strong)類名<協議名稱> * 屬性名;
@property (nonatomic,strong)id<協議名稱>  屬性名;
 
 
協議可定義在單獨.h文件中,也可以定義在某個類中
1》如果這個協議只用在某個類中,應該把協議定義在該類中
2》如果這個協議用在很多類中,就應該定義在單獨文件中
 
分類可定義在單獨.h和.m文件中,也可以定義在原來類中
1》一般情況下,都是定義在單獨文件
2》定義在原來類中的分類,只要求能看懂語法
 
 
#import "TicketDelegate.h"
@interface Person : NSObject
-(void) buyTicket;
//擁有一個代理屬性,代理的類名隨便,必須遵守TicketDeltegate協議
@property (nonatomic,retain) id<TicketDelegate> delegate;
 
@end

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西平县| 华坪县| 遂昌县| 宜宾市| 遂昌县| 姜堰市| 科技| 南木林县| 佛山市| 长治县| 兴安县| 福建省| 邻水| 容城县| 遂昌县| 登封市| 南川市| 黄骅市| 双鸭山市| 新余市| 阜新市| 塔河县| 临潭县| 镇坪县| 威远县| 盐边县| 无棣县| 克什克腾旗| 乐亭县| 米林县| 神木县| 长沙县| 阿巴嘎旗| 府谷县| 南皮县| 镶黄旗| 武川县| 融水| 芷江| 儋州市| 泰兴市|