在OC中中括號(hào)取值常用的就是NSDictionary和NSArray了
類似NSDictionary的key-value讀寫
- 效果
Person *person = [[Person alloc] init];
person[@"name"] = @"Mike";
person[@"address"] = @"Wuhan";
person[@"sex"] = @YES;
person[@"age"] = @10;
NSLog(@"%@ %@", person[@"name"], person[@"age"]);
- 實(shí)現(xiàn)
實(shí)現(xiàn)只需要實(shí)現(xiàn)兩個(gè)存取的方法即可
- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key;
類似NSArray下標(biāo)讀寫
- 效果
MyArray *myarr = [[MyArray alloc] initWithStrings:@"Hello", @"How", @"are", @"you", nil];
NSLog(@"%@", myarr);
myarr[0] = @"Hi!";
myarr[1] = @"World";
NSLog(@"%@ %@", myarr[0], myarr[1]);
- 實(shí)現(xiàn)
實(shí)現(xiàn)只需要實(shí)現(xiàn)兩個(gè)存取的方法即可
- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- 補(bǔ)充
其中的init方法,原型是這樣的
- (instancetype)initWithStrings:(NSString *)string, ... NS_REQUIRES_NIL_TERMINATION;
是一個(gè)動(dòng)態(tài)參數(shù)方法,類似與NSArray的的 initWithObjects 方法负溪,動(dòng)態(tài)參數(shù)可以看這里
NS_REQUIRES_NIL_TERMINATION宏可以檢查最后一個(gè)參數(shù)是不是nil