Ваш метод имеет указатель в качестве параметра:
-(void)addIconWithType:(UIIconType *)iconType;
// Takes a pointer to a UIIconType as argument
, и вы передаете ему целое число:
[iconView addIconWithType:UIIconTypeStandard];
// UIIconTypeStandard is not a pointer to a UIIconType
Измените определение метода следующим образом:
-(void)addIconWithType:(UIIconType)iconType;
Кроме того, не определяют свои собственные перечисления, классы или что-либо еще с префиксом UI
.Этот префикс зарезервирован Apple, и вы можете использовать его для бессмысленных головных болей.Используйте ваши инициалы или инициалы вашей компании или проекта.
Причина, по которой почти все методы Objective-C имеют параметры со звездочкой, заключается в том, что при использовании объекта Объект находится в одном месте в памяти, и вы просто передаете указатель на этот объект.Вот что указывает MyClass *
- указатель на объект типа MyClass
.Указатель дает вам адрес местоположения объекта в памяти, так что вы можете избежать необходимости перемещать весь объект с места на место, когда вы хотите его использовать.В этом случае вещь, которую вы хотите передать методу, - это не объект, а простое целое число, поэтому вы можете просто передать целое число напрямую.