#objective-c #nsmutablearray
#objective-c #nsmutablearray
Вопрос:
Есть ли какая-либо разница между методами setObject:forKey
и setObject:forKeyedSubscript
?
Я использую Objective-C NSMutableArray
. Мне кажется, что оба они функционируют одинаково.
Ответ №1:
setObject:forKeyedSubscript:
и setObject:atIndexedSubscript:
используются для изменяемых методов подписки на коллекции, введенных с литералами Objective C.
setObject:forKeyedSubscript:
используется для изменяемых коллекций в стиле словаря. Вы не должны использовать его с коллекциями в стиле массива.
Больше информации здесь.
Ответ №2:
В документации говорится:
«Этот метод идентичен setObject:forKey:».
Комментарии:
1. Возможно, вы могли бы объяснить, почему это тогда существует?
2. Или, по крайней мере, предоставьте документацию.
3. Он используется для обеспечения поддержки литералов. Если я пишу
myDict[@"key"] = @"bob";
, то Objective-C вызываетsetObject:forKeyedSubscript
метод следующим образом:[myDict setObject:@"bob" forKeyedSubscript:@"key"];
. Теперь имеет смысл?4. Он утверждает, что он идентичен, но
setObject:forKeyedSubscript:
допускаетnil
значения (что удаляет ключ и значение из словаря), тогда какsetObject:forKey:
вызоветNSInvalidArgumentException
, если вы передадите емуnil
значение!