, если ничего не хранится с indexedSubscript (он же [index]
) вашего NSArray, он пуст, и только Xcode знает о вашем намерении, какой тип вы хотите сохранить там.
поэтому
@property(nonatomic) NSArray<CustomObject*>* tabs;
эквивалентно
@property(nonatomic) NSArray<NSObject*>* tabs;
эквивалентно
@property(nonatomic) NSArray<id>* tabs;
эквивалентно
@property(nonatomic) NSArray* tabs;
Приведенный выше список неверен на 100%, потому что Xcode может выдает ошибку, когда вы пытаетесь смешать типы данных и пытаться скомпилировать, поэтому он не должен доходить до точки, где вы храните неправильные типы данных. быть запрошенным во время выполнения.
Если это важно в вашем шаблоне проектирования, вы можете создать свой собственный тип данных, к которому можно будет получить доступ через indexedSubscripts, а также сохранить информацию о своем намерении о том, какой тип данных вы храните там, даже если пусто . Но стоит подумать, если это все еще шаблон проектирования, который соответствует тому, чего вы хотели достичь.