讓自定義的NSObject子類支持下標(biāo)運(yùn)算符

NSArray, NSDictionary支持下標(biāo)運(yùn)算符,使用下標(biāo)運(yùn)算符,可以使代碼看起來比較優(yōu)雅,工程師也可以少輸入很多字符。那么問題來了,能不能讓我們自定義的類也支持下標(biāo)運(yùn)算符呢?答案是“可以”,并且實(shí)現(xiàn)起來很簡(jiǎn)單。

如果想支持索引下標(biāo),自定義的類需要實(shí)現(xiàn)如下兩個(gè)方法:

- (id)objectAtIndexedSubscript: (NSUInteger)idx;
- (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)idx;

如果想支持鍵值下標(biāo),自定義的類需要實(shí)現(xiàn)如下兩個(gè)方法:

- (id)objectForKeyedSubscript: (id<NSCopying>)key;
- (void)setObject: (id)obj forKeyedSubscript: (id<NSCopying>)key;

例子

頭文件

@interface TestSubscripting : NSObject

- (id)objectAtIndexedSubscript: (NSUInteger)idx;
- (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)idx;

- (id)objectForKeyedSubscript: (id<NSCopying>)key;
- (void)setObject: (id)obj forKeyedSubscript: (id<NSCopying>)key;

@end

實(shí)現(xiàn)文件

@interface TestSubscripting ()

@property (nonatomic, strong) NSMutableArray *array;
@property (nonatomic, strong) NSMutableDictionary *dictionary;

@end

@implementation TestSubscripting

- (instancetype)init {
    self = [super init];
    if (self) {
        _array = [NSMutableArray array];
        _dictionary = [NSMutableDictionary dictionary];
    }
    
    return self;
}

- (id)objectAtIndexedSubscript:(NSUInteger)idx {
    return self.array[idx];
}

- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx {
    self.array[idx] = obj;
}

- (id)objectForKeyedSubscript:(id<NSCopying>)key {
    return self.dictionary[key];
}

- (void)setObject:(id)obj forKeyedSubscript:(id<NSCopying>)key {
    self.dictionary[key] = obj;
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 本章將會(huì)介紹 模塊和源文件訪問級(jí)別訪問控制語(yǔ)法自定義類型子類常量、變量、屬性、下標(biāo)構(gòu)造器協(xié)議擴(kuò)展泛型類型別名位運(yùn)算...
    寒橋閱讀 904評(píng)論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,947評(píng)論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,241評(píng)論 4 61
  • “咱們挨餓,卻讓被人吃得飽飽的。四十年了,一直是這樣。” 這是上校的妻子在小說尾聲時(shí)帶著一種痛苦情緒所說出去的一句...
    VARS1閱讀 987評(píng)論 0 0
  • 哈叭狗 身姿混母公,小嘴軟毛松。 開口如嬰鬧,依膝似傻萌。 鼻邊聞肉味,桌下覓食蹤。 名叫哈叭狗,人群屢幻形。 豬...
    鄧州李海波閱讀 502評(píng)論 0 0