Используя мое собственное перечисление typedef, получаю «Делает указатель из целого числа без приведения» - PullRequest
3 голосов
/ 17 мая 2011

Ошибка, которую я задаю: «Назначение делает указатель из целого числа без приведения». Вот мой код:

typedef enum {
    UIIconTypeCustom = 0,
    UIIconTypeStandard,
} UIIconType;

.

-(void)addIconWithType:(UIIconType *)iconType {

...

}

И это строка, с которой возникла проблема:

[iconView addIconWithType:UIIconTypeStandard];

Ответы [ 2 ]

9 голосов
/ 17 мая 2011

Ваш метод имеет указатель в качестве параметра:

-(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.Указатель дает вам адрес местоположения объекта в памяти, так что вы можете избежать необходимости перемещать весь объект с места на место, когда вы хотите его использовать.В этом случае вещь, которую вы хотите передать методу, - это не объект, а простое целое число, поэтому вы можете просто передать целое число напрямую.

1 голос
/ 17 мая 2011

Изменение:

-(void)addIconWithType:(UIIconType *)iconType

на:

-(void)addIconWithType:(UIIconType)iconType

Ваш метод ожидает указатель на UIIconType, но вы пытаетесь передать его по значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...