У меня есть собственный набор коллекций с общей параметризацией. Я создаю коллекцию кошек, добавляю кошку. Когда я пытаюсь вернуть кошку, Xcode показывает ошибку: «Свойство« имя »не найдено на объекте типа« id ». Это абсурд, потому что Cat
имеет свойство name
и MyCustomCollection
не возвращает id
, но ObjectType
. Как объявить метод, чтобы автозаполнение могло понять, какой тип возвращается методом?Тип возвращаемого метода Objective-C с generics и автозаполнением Xcode
MyCustomCollection *collection = [[MyCustomCollection<Cat *> alloc] init];
[collection addCustomObject:[[Cat alloc] init]];
NSString *string = [collection customObjectAtIndex:0].name; // Property 'name' not found on object of type 'id'
MyCustomCollection.h файл
@interface MyCustomCollection<ObjectType> : NSObject
-(ObjectType)customObjectAtIndex:(NSUInteger)index;
-(void)addCustomObject:(ObjectType)object;
@end
Cat.h файл
@interface Cat : NSObject
@property (nonatomic, strong) NSString *name;
@end