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

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

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

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

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

12 ответов

17 просмотров

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

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
А почему это предполагается-то?

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта