У меня есть это свойство:
@property (nonatomic) NSMutableArray <__kindof superclass*> *items;
Я заполняю его объектами для подкласса (что должно быть в порядке из-за __kindof).Я получаю массив следующим образом:
NSMutableArray <__kindof subclass*> *items = holderObject.items;
Но теперь я получаю это предупреждение компилятора:
Incompatible pointer types initializing 'NSMutableArray<subclass *> *' with an expression of type 'NSMutableArray<__kindof superclass *> * _Nullable'
Разве это не то, что __kindof нам предлагает сделать?Что я здесь не так делаю?
ОБНОВЛЕНИЕ 2: Это происходит только для изменяемых массивов.
Обновление: вот простой код, который показываетпредупреждение:
Создайте новый класс GenericsError.h:
@import UIKit;
@interface GenericsError : NSObject
@property (nonatomic) NSMutableArray <__kindof UIViewController*> *generics;
@end
В любом viewController просто добавьте:
GenericsError *error = [GenericsError new];
NSMutableArray <ViewController*>* controllers = error.generics;
(замените ViewController на то, что называется вашим viewController).Я ничего не добавляю и не создаю, просто получаю предупреждение компилятора за ошибку generics.