Установка объекта класса как свойства другого класса в Objective-C

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

@property (nonatomic, assign) Class *filterClass;

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

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

Я получаю ошибку:

"Неявное преобразование указателя Objective C в класс __unsafe_unretained *" запрещено ARC"

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

1 ответ

Решение

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

@property (nonatomic, assign) Class filterClass;

вместо

@property (nonatomic, assign) Class *filterClass;

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

Другие вопросы по тегам