2011-02-08 3 views
-1

Как вы звоните setTag: для объектов id?setTag: in Objective-C

+0

Да? Вам нужно будет предоставить немного больше контекста для вашего вопроса. –

ответ

-1

обычно идет как

object-type.tag = value; 

как

button.tag = 50; 
0

id не совсем класса. Это общий тип, который используется в Objective C для произвольного объекта. Например, метод, принимающий любой объект может выглядеть следующим образом

-(void) doIt(id parameter); 

Итак, говоря, что ваш объект имеет тип id не добавляет никакой информации.

Но если вы абсолютно уверены, что объект отвечает на setTag, вы можете просто сделать это: [object setTag:123].
В противном случае просто найдите документацию для классов объекта.

0

setTag следует считать методом, относящимся к подклассам UIView. Если вы уверены, что рассматриваемый объект действительно является подклассом UIView, вы бы назвали этот метод как обычно: [someIdInstance setTag:5];

Основываясь на вашем вопросе, я предполагаю, Объектом типа id может быть указатель на любой тип объекта. У Вас нет никакой гарантии, что setTag: на самом деле может быть определено для этого объекта, который, как правило, почему код, который имеет дело с id указателями выполняет шаги, как это:

id foo = [self getSomePointer]; 
    if([foo respondsToSelector:@selector(setTag:)]) { 
    [foo setTag:4]; 
    } 

код проверяет, чтобы увидеть, если объект даже имеет в перед тем как попытаться вызвать его.

2

Кроме того, если вы не хотите, чтобы ваш компилятор жаловался, и вы знаете тип объекта, его можно отбросить.

[(UILabel *)objById setTag:5]; 
Смежные вопросы