Создание подклассов UIViewController в iOS
Я запутался при создании подкласса UIViewController в iOS, у меня есть родительский viewcontroller, который соответствует протоколу UICollectionViewDataSource (в его частном интерфейсе внутри файла реализации).
/* Parent.m */
@interface Parent () <UICollectionViewDataSource>
// this CollectionView is connected to storyboard
@property (weak, nonatomic) IBOutlet UICollectionView *CollectionView;
@end
@implementation Parent
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.somecount;
}
@end
И тогда я создаю дочерний контроллер представления, который унаследован от родительского. Ребенок ничего не знает о UICollectionViewDataSource как источнике данных, реализованном в частном интерфейсе родителя.
/* child.h */
@interface child : parent
// nothing was mentioned here that parent has a method to set the count using 'somecount'
@end
Затем я установил viewcontroller из mainstoryboard в качестве дочернего контроллера представления.
Почему IOS получает значение из родительского свойства somecount и устанавливает значение для ребенка?
Благодарю.
1 ответ
Ты спрашиваешь:
почему IOS получить значение из родительского свойства
somecount
и установить значение для ребенка?
Подкласс всегда наследует свойства и методы его super
учебный класс. Они могут быть или не быть публичными интерфейсами (вы не показали нам декларацию somecount
, поэтому мы не знаем), но независимо от того, они есть и будут решены во время выполнения (если вы не переопределите эти методы / свойства в child
что вы, кажется, не делаете). Если есть частные методы и свойства в parent
во время компиляции вы можете быть не видны из child
, но они все еще там и будут вести себя должным образом во время выполнения.
Итак, когда сцена с представлением коллекции указывает child
в качестве источника данных для представления коллекции, если child
не реализует те UICollectionViewDataSource
методы, он будет автоматически вызывать те из parent
, Аналогичным образом, когда любой из этих методов относится к somecount
если child
не переопределяет его, он снова вызовет соответствующие методы доступа parent
, Нижняя линия, child
автоматически наследует все поведения, методы и свойства parent
,