2013-12-16 3 views
-1

id - тип объекта; тип мог быть NSArray * или NSString *, например. Класс может быть NSArray * или NSString * или другой объект.В чем разница между идентификатором id и классом?

я могу использовать их, как следовать

- (void)wantWriteAction:(id)sender { 
} 

- (void)wantWriteAction:(Class)sender { 
} 

Я хочу знать, различные между them.In каких условиях не может использовать идентификатор? Какие условия не могут использовать класс?

+0

http://stackoverflow.com/questions/7256989/casting-sender-to-ibaction-as-id-or-specific-class – the1pawan

+0

id может быть любым и отвечать на любые сообщения в системе, но класс может ответить в частности. id - общий – the1pawan

ответ

1

id представляет собой экземпляр любого класса. Class представляет любой класс - не экземпляр, а сам класс.

Таким образом, id может быть конкретным экземпляром NSString или NSArray. Вы можете вызвать на нем методы экземпляра - те, которые показаны в документации, например -length или -stringByAppendingFormat. Если id является NSString, тогда его значение может быть @"foo".

Class может быть класс NSString или класс NSArray. Вы можете вызвать методы класса на нем - те, которые показаны в документации +, например, +stringWithFormat. Если Class является NSString (обратите внимание, не NSString, но NSString класс), то это не имеет никакого значения строки, потому что это не строка. Это класс.

Смежные вопросы