Создание подклассов 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,

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