Intereting Posts
Случайное изображение аннотации mapview Загрузите аудиофайл с URL-адреса и воспроизведите его в приложении iOS three20 – Предупреждение памяти TTTableViewController дает пустой экран, как исправить? Как открыть приложение ios при нажатии Push Notification? UIButton с текстом Stroke / Outline Можем ли мы добавить более пяти панелей вкладок в ios sdk? UIView анимация полного круга вращения с UIViewAnimationOptionCurveEaseInOut ios / xcode: Лучшее место для свойств и методов Core Data Утилита передачи iOS AWS Загрузка запроса на добавление заголовков или параметров Как связать два вида коллекции, которые связаны друг с другом? Отображение последнего UIAlertView определенного типа Непризнанный селектор, отправленный в экземпляр Objective-C CKFetchRecordChangesOperation возвращает исходные данные сначала Неустранимая ошибка при развертывании CLLocation Location Coordinate Отображение html-файла с помощью UIWebView

Перегрузка оператора Objective-C iOS6 (const id )

я знаю о новых литералах и аксессуарах, например

id obj = [dict objectForKey:@"keyStr"]; 

эквивалентно

 id obj = dict[@"keyStr"]; 

я заметил несколько изменений в основных классах, например

 + (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt; 

но что такое (const id [])?

как я могу сделать свой собственный класс с помощью оператора []

это, по сути, перегрузка оператора, что, по моему мнению, невозможно в ObjectiveC, будет возможно перегрузить другие операторы, такие как +, /, – и т. д.

Перегрузка оператора возможна в C ++, означает ли это, что я могу использовать класс Objective-C ++?

const id [] – это просто массив C объектов const Objective-C. Этот метод обрабатывает построение NSDictionary из словарного литерала – @{ @"a": @1 } . Это не то, что вы ищете.

Для доступа к объекту с помощью ключа X внутри объекта something с помощью something[X] является подписью .

Если вы хотите, чтобы ваш класс поддерживал подписку, вы реализуете - (id)objectAtIndexedSubscript:(NSUInteger)idx если хотите взять целые числа и - (id)objectForKeyedSubscript:(id)key если вы хотите взять объекты. Для получения дополнительной информации см. Документацию clang («LLVM compiler») этой функции .

Соответствующие методы для сеттеров: - (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index и - (void)setObject:(id)object forKeyedSubscript:(id<NSCopying>)aKey .

const id []

это просто объявление типа массива const id .

Это просто эквивалент:

const int a[]

для типа id .