Хранить ссылки на класс в словаре, а затем создать экземпляр класса позже? - PullRequest
2 голосов
/ 22 апреля 2011

Я хотел бы сохранить объект Class в NSMutableDictionary, а затем создать экземпляр копии позже на основе ключа (в частности, имени NSNotification). Но, к сожалению, я не могу выяснить, какой тип объекта «Класс» находится в Objective-C, и его трудно найти в Google. Он определенно не относится к типу 'id', поэтому в словаре он обычно не помещается:

 warning: Semantic Issue: Incompatible pointer types sending 'Class *' to parameter of type 'id'

Также я могу сохранить имя класса в словаре и использовать NSClassFromString для создания экземпляра класса. Кажется глупым использовать NSStringFromClass, чтобы поместить класс в словарь, а затем NSClassFromString, чтобы получить класс снова. Это мой лучший вариант?

1 Ответ

8 голосов
/ 22 апреля 2011

Вы можете сохранить Class в словаре, например,

NSMutableDictionary* dict = [NSMutableDictionary dictionary];
Class k = [NSString class];
[dict setObject:k forKey:@"foo"];
NSLog(@"%@", dict);

Фактически Class совместим с id.Обратите внимание, что вам не нужно * после Class.Это как id.

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