172 похожих чатов

Всем привет! Создаю вот таким образом верстку кодом: let label1 =

UILabel()
label1.backgroundColor = .green
label1.textColor = .red
label1.text = "Мой текст"

Прочитал, что () это тоже самое что и .init(), а .init() совпадает с init(frame: .zero).

Вопрос почему в некоторых исходниках пишут не UILabel(), а UILabel(frame: .zero), ведь они одинаковы?

12 ответов

5 просмотров

Потому что хотят)

Top 1-Pusk Автор вопроса
Никита
Потому что хотят)

Ну есть же этому логичное обоснование, тем самым на прямую показывают, что не будет верстки фреймами и что будут констреинты или почему?

В Objc процесс инициализации довольно пространный и не дающий никаких связанных с этим гарантий компилятор. Процесс инициализации позволяет завершиться тем, что можно не присвоить никаких значений всем хранимым свойствам и по милости компилятора, он либо занулит их все, либо там будет просто какой-то мусор; В отличии от Swift, в Objc все инициализаторы наследуются; В отличии от того же Swift, в Objc на процесс инициализации не накладывается никаких компайл тайм гарантий. --- Отсюда мы имеем следующее: - NSObject определяет назначенный инициализатор init; Окей - Теперь, если мы отнаследуемся условным классом Foo от NSObject, то получим в наследство инициализатор init. Здесь кроется интересный момент, никто нам не запретит, не переопределять унаследованный init. Это в свою очередь означает, что экземпляр нашего Foo может быть создан через него, но никакие из определяемых нами в Foo возможных хранимых свойств он не проинициализирует и в них в лучшем случае будут нули, а в худшем - мусор. - С UIView`же мы имеем лишь словесную гарантию, что разработчики UIKit обязываются переопределить унаследованный от NSObject init, делая его уже convinience инициализатором, в котором просто вызывается назначенный [self initWithFrame: CGRectZero]. В настоящем, в Objc добавлены некоторые вещи, по типу атрибутов NS_UNAVAILABLE и NS_DESIGNATED_INITIALIZER в каком-то роде помогающем ничем не гарантирующему процессу инициализации в Objc. Иногда и сам Xcode в каких-то случаях может поругаться предупреждением. НО ничто из этого не предотвратит компиляции. --- Поэтому человек, должен - либо знать, что написано выше и получать "моральное право" вызывать что-то вроде UIView()/UILabel() зная все подводные; - либо в какой-то момент ты можешь выстрелить себе в ногу, а пусть это будет даже не связано с UIKit, а скажем при работе с другим Objc кодом или на каком-то условном собесе.

по красоте расписал. единственное, насколько я помню в дебаге неинициализированные свойства обнуляются, а в релизе там мусор

Я вот сижу в задумчивости и пытаюсь понять как ответ связан с вопросом ))

Donna Anna
Я вот сижу в задумчивости и пытаюсь понять как отв...

Эмм. Напрямую, что бы у человека отпал вопрос выбора.

Руслан Лутфуллин
Эмм. Напрямую, что бы у человека отпал вопрос выбо...

Ну ты как минимум в таком случае пропустил кусок «поэтому дорогой товарищ ответ на твой вопрос такой-то»

Donna Anna
Ну ты как минимум в таком случае пропустил кусок «...

Предполагается, что человек после прочтения сам сделает выводы

Donna Anna
А почему это предполагается-то?

Мне кажется, если человек сам логически придет к выводу, то это намного лучше усядет в памяти. Нежели ему подадут на блюдце все

Похожие вопросы

Обсуждают сегодня

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
Дык какой описанный сценарий то? Единственное, что вижу я - это то что есть какой то интерфейс1 , про который известно, что у него есть метод, который возвращает другой интерф...
Jack128
7
А если без шуток, на чем десктоп сейчас пишут кроссплатформенный (ну чтобы с минимальным допиливанием под каждую платформу) и чтобы хорошая производительность софта была. Толь...
🐈
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта