亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Objective-C(10)抽象父類---協議

發布時間:2020-06-20 16:04:31 來源:網絡 閱讀:591 作者:ymanmeng123 欄目:移動開發
  • 協議的定義與使用

什么是協議?

     可以用來聲明一大堆方法(不能聲明成員變量)

     只要某個類遵循了這個協議,就相當于擁有了這個協議中的所有方法聲明

     只要父類遵守了某個協議,就相當于子類也遵守了

添加協議頭文件:Objective-C File —> protocol

    

協議類似于Java中的接口,類似于C++中的抽象類

     

定義協議:

@protocol 協議名 <父協議名1, 父協議名2, ...>
…     //方法聲明列表
@end


協議中的方法的限定:

     @required     其后的方法要求在具體的類中必須實現

     @optional     其后的方法要求在具體的類中選擇實現

遵循協議:

@interface 類名 : 父類 <協議名1, 協議名2, ...>
… //
@end


協議也可以遵守協議,相當于對現有協議的擴充


基協議NSObject:

     該協議中聲明了如內存管理等基本方法,自定義協議一定要遵循這個基協議

類的對象屬性(復合的)需要指明該屬性遵循哪些協議:

@property (nonatomic, strong) 類名<協議名> * 屬性名;
@property (nonatomic, strong) id<協議名> 屬性名;

     也就是說,類名<協議名> 才表示一個確定的類型

     協議可定義在單獨的.h文件中,也可以定在某個類的文件中


  • NSCopying協議

創建對象副本 ,使用copy或mutablecopy方法創建一個對象的副本

- (id) copy          
- (id) mutableCopy


淺復制

     指針的拷貝,源對象和副本對象指向同一個對象

     對象的引用計數+1,相當于做了一次retain。(內存管理)

深復制

     內容的拷貝,源對象和副本對象指向不同的對象

     源對象的引用計數不變,副本的引用計數為1

對象若想要調用copy方法必須遵循NSCopying協議,并實現方法:

- (id)copyWithZone:(NSZone *)zone

     如:

- (id) copyWithZone:(NSZone *) zone {
    AMPerson * p = [[[self class] allocWithZone:zone] init];
    p.age = self.age;
    p.name = [self.name copy];
    return p;
}


對象若想要調用mutableCopy方法必須遵循NSMutableCopying協議,并實現方法:

- (id)mutableCopyWithZone:(NSZone *)zone


  • NSCoding協議

NSKeyedArchiver歸檔器

+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path
+ (NSData *)archivedDataWithRootObject:(id)rootObject


NSKeyedUnarchiver解檔器

+ (id)unarchiveObjectWithData:(NSData *)data
+ (id)unarchiveObjectWithFile:(NSString *)path

如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,可以直接用NSKeyedArchiver進行歸檔。


如果是自定義的模型對象,模型對象需要遵循NSCoding協議,并實現方法:

- (void)encodeWithCoder:(NSCoder *)encoder
- (instancetype)initWithCoder:(NSCoder *)decoder


NSCoder編碼器

     encodeWithCoder:方法中應對打算歸檔的屬性進行編碼,使用encode開頭的方法。

     initWithCoder:方法中應對歸檔中所有的數據進行解碼(到屬性),使用decode開頭的方法。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九江县| 寿阳县| 龙泉市| 环江| 绥中县| 兰考县| 临沧市| 三河市| 额尔古纳市| 亳州市| 肥城市| 南陵县| 马边| 章丘市| 青龙| 丰都县| 石泉县| 虎林市| 溆浦县| 微博| 萍乡市| 奉节县| 雅安市| 延吉市| 改则县| 中西区| 东港市| 宜昌市| 昭觉县| 元江| 辽源市| 潜山县| 朝阳市| 历史| 榆树市| 鸡泽县| 乌兰浩特市| 青浦区| 锦州市| 永胜县| 二手房|