Objective-C Language
Современная цель-C
Поиск…
литералы
Современная цель C предоставляет способы сокращения количества кода, необходимого для инициализации некоторых распространенных типов. Этот новый способ очень похож на то, как объекты NSString инициализируются постоянными строками.
NSNumber
Старый путь:
NSNumber *number = [NSNumber numberWithInt:25];
Современный способ:
NSNumber *number = @25;
Примечание: Вы также можете хранить BOOL
значения в NSNumber
объектов с использованием @YES
, @NO
или @(someBoolValue)
;
NSArray
Старый путь:
NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two", [NSNumber numberWithInt:3], @"Four", nil];
Современный способ:
NSArray *array = @[@"One", @"Two", @3, @"Four"];
NSDictionary
Старый путь:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: array, @"Object", [NSNumber numberWithFloat:1.5], @"Value", @"ObjectiveC", @"Language", nil];
Современный способ:
NSDictionary *dictionary = @{@"Object": array, @"Value": @1.5, @"Language": @"ObjectiveC"};
Контейнерные подписки
В современном синтаксисе Objective C вы можете получать значения из NSArray
и NSDictionary
используя контейнерные подписки.
Старый путь:
NSObject *object1 = [array objectAtIndex:1];
NSObject *object2 = [dictionary objectForKey:@"Value"];
Современный способ:
NSObject *object1 = array[1];
NSObject *object2 = dictionary[@"Value"];
Вы также можете вставлять объекты в массивы и устанавливать объекты для ключей в словарях более чистым способом:
Старый путь:
// replacing at specific index
[mutableArray replaceObjectAtIndex:1 withObject:@"NewValue"];
// adding a new value to the end
[mutableArray addObject:@"NewValue"];
[mutableDictionary setObject:@"NewValue" forKey:@"NewKey"];
Современный способ:
mutableArray[1] = @"NewValue";
mutableArray[[mutableArray count]] = @"NewValue";
mutableDictionary[@"NewKey"] = @"NewValue";