2014-01-22 5 views
4

Я довольно новичок в Objective C, поэтому, возможно, это действительно просто, но я построил класс, который будет хранить среди прочего ссылку на класс. Это то, что у меня в файле .h:Установка объекта класса как свойства другого класса в Objective-C

@property (nonatomic, assign) Class *filterClass; 

Где я получаю сосать, что я не в состоянии присвоить объекты класса к экземпляру этого класса они, как я могу добавить их в массивы или переменные :

Filter *filter1 = [[Filter alloc] init]; 
filter1.title = @"Sepia"; 
filter1.filterClass = [GPUImageSepiaFilter class]; 

Я получаю сообщение об ошибке:

"implicit Conversion of an Objective-C pointer to '__unsafe_unretained Class *' is disallowed with ARC"

Похоже, что он хочет, чтобы свойство Фильтровального быть сильным, но это также дает и ошибку, потому что, как я понимаю, вы не можете определить примитив типы как сильный. Очевидно, я мог бы просто хранить строки в качестве ссылок на классы и использовать -NSClassFromString, однако было бы неплохо, если бы я мог просто передать объекты класса. Поскольку я могу помещать их в массивы, и кажется, что это должно быть возможно. Дайте мне знать, если я буду делать это совершенно неправильно.

+0

'Class' тип, который может содержать указатель на объект класса. Как и другие указатели на объекты, он может быть сильным или слабым. – newacct

ответ

4

Объявление свойство должно быть

@property (nonatomic, assign) Class filterClass; 

вместо

@property (nonatomic, assign) Class *filterClass; 

Пожалуйста, проверьте этот ответ Objective-c - Class Keyword

+0

Сладкое спасибо! Это имеет большой смысл. – Ryan

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