Аз просто съм любопитен, когато става въпрос за инициализиране UIView
с; Забелязвам, че когато се обадя на конструктора на потребителски модел -(id)initWithFrame:(CGRect)frame
, примитивният конструктор -(id)init
никога не се нарича, което означава, че ще трябва да инициализирам променливи на променливите в двата конструктора. Това означава ли да бъде стратегия за оптимизация, така че да се обаждате -(id)initWithFrame:(CGRect)frame
е изчислително "по-бързо" (насърчаване на по-добра производителност) от обаждането UIView *view = [UIView new]; view.frame = frame;
? Опцията initWithFrame е по-бърза от създаването на нов потребителски модел и ръчно задаване на рамката? Всъщност предпочитам да го направят, за да запази програмната последователност.
Отговори:
2 за отговор № 1Не е просто това initWithFrame
е означен инициализатор на UIView
(от клас позоваване):
дискусия
Новият обект за преглед трябва да бъде вмъкнат визглед йерархия на прозореца, преди да може да се използва. Ако създадете изглед обектно програмно, този метод е предназначен за инициализатора клас UIView. Подкласовете могат да заменят този метод, за да изпълняват всички потребителски инициализация, но трябва да се обадя супер в началото на техните изпълнение.