Что означает (NSDictionary <NSString *, id> * __nonnull)?

Тип параметра – это ( NSDictionary<NSString *,id> * __nonnull ), и это означает, что параметр должен быть словарем и никогда не должен быть нулевым. Тогда что означает <NSString *, id> ? Являются ли имена протоколов NSString * и 'id'? Означает ли это, что словарь должен быть json? Но NSString всегда являются объектами. Кто-нибудь поможет?

Это синтаксис универсальных генераторов Objective C. Эта функция в основном включена для исправления проблем совместимости Objective C – Swift.

NSDictionary<NSString *,id> означает, что словарные ключи должны иметь тип NSString а его значение может быть любым типом объекта ( id ).

Например: если вы хотите объявить словарь, который будет хранить только значения NSString, вы можете объявить его следующим образом:

 NSDictionary<NSString *,NSString *> *stringDictionary; 

Однако в Objective C вы можете установить значения любого типа в этот словарь, ошибок не будет. Но если вы используете тот же объект stringDictionary из класса swift, вы можете установить только строковое значение для этого словаря, иначе оно вызовет ошибку.

Пожалуйста, проверьте эту статью для получения более подробной информации.

  • Создает ли изображение I / O кеширование изображения при создании источника изображения с помощью CFDataRef?
  • Ошибка при обработке основных данных
  • возможно ли в объекте-c вызывать метод после завершения выполнения ряда других методов
  • Добавление программно созданных представлений в scrollview по вертикали (линейная компоновка в iOS)
  • Параметр Nil __block, устанавливающий NSString
  • iOS пользовательская табличная метка ячейки с изменением размера
  • Невозможно выполнить регулярное выражение
  • Как работает UIButton @selector?
  • Почему свойства элементов в атрибутах UIToolbar и UITabBar (copy) вместо (сохранить)
  • Отключить контроллер вида от @selector без создания отдельного метода
  • Как я могу получить все пиксели изображения из объекта UIImage
  • Давайте будем гением компьютера.