Нативная разработка мобильных приложений


Что такое «необязательные значения»?



Download 3,69 Mb.
Pdf ko'rish
bet174/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   170   171   172   173   174   175   176   177   ...   228
Bog'liq
Нативная разработка мобильных приложений

Что такое «необязательные значения»?
Типы, поддерживающие и не поддерживающие значение 
null
, являются важной частью 
языка Kotlin, и им прямо соответствуют необязательные типы в Swift. Необязательные 
типы, такие как 
Object?
, лучше всего рассматривать как некоторый контейнер, или ко
-
робку. Коробка может быть пустой или что­то хранить. Используя такой тип, вы говорите 
компилятору: «Все в порядке, если в коробке что­то есть, то это что­то имеет тип 
Object

но вообще коробка может быть и пустой». В Kotlin и Swift типы по умолчанию не под
-
держивают значение 
null
, то есть переменным этих типов нельзя присвоить 
null
или 
nil
– 
эквивалент 
null
в языке Swift.
Неявно распаковываемые необязательные типы, такие как 
Object!
, – это специальные 
типы с поддержкой 
null
, или тип 
Optional
в Swift. Переменным этих типов можно присво
-
ить значение 
null
, но, объявляя неявно распаковываемые типы, вы фактически говорите 
компилятору: «В этой коробке будет храниться объект. В какой­то момент вместо объекта 
может храниться пустая ссылка, но я гарантирую, что когда потребуется вскрыть коробку, 
там точно будет нужный объект. Верь мне. Я разработчик и знаю, как работает мое прило
-
жение». Но если вы ошибетесь, приложение аварийно завершит работу, поэтому исполь
-
зуйте эти типы с большой осторожностью, и только когда вы уверены, что 
nil
обязательно 
заменит действительная ссылка.


Оформление представлений 

269
За дополнительной информацией о необязательных типах в Swift обращайтесь к раз
-
делу «Optionals» в документации Apple (https://oreil.ly/AMdxC). За информацией о типах 
с поддержкой и без поддержки 
null
в языке Kotlin обращайтесь к разделу «Null­безопас­
ность» в руководстве по языку Kotlin (
https://kotli
nlang.ru/docs/reference/null­safety.html).
Если объявить свойство 
headerLabel
с типом 
UILabel?
, приложение будет ком
-
пилироваться и запускаться без ошибок. Но это не самое правильное решение, 
потому что свойство все еще будет присутствовать в классе, и мы по-прежнему 
будем пытаться присвоить красный цвет свойству 
textColor
метки 
headerLabel

но поскольку в 
headerLabel
будет храниться значение 
nil
, это приведет к тому, 
что ошибка будет просто игнорироваться. Позже, когда мы вернемся к редак
-
тированию класса, мы можем не вспомнить, что удалили метку заголовка из 
представления, и потратить немало времени, пытаясь выяснить, что делает эта 
строка. Как мне кажется, лучше оставить 
@IBOutlets
как неявно распаковыва
-
емый необязательный тип и позволить приложению завершиться с ошибкой 
после запуска, чтобы она напоминала о необходимости удалить этот код после 
удаления связанного представления.
А сейчас удалим это свойство из класса 
WelcomeViewController
. Попутно доба
-
вим несколько строк кода, чтобы отобразить увеличенный заголовок, который 
мы установили в редакторе раскадровки, в навигационной панели контрол
-
лера представления (по умолчанию он выключен). Наш класс должен теперь 
выглядеть так:
class WelcomeViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
}
Щелкните на кнопке 

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   170   171   172   173   174   175   176   177   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish