Comments 10
Могут ли ленивые вычисляемые свойства вычисляться больше одного раза?
могут:
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/properties/
If a property marked with the
lazy
modifier is accessed by multiple threads simultaneously and the property hasn’t yet been initialized, there’s no guarantee that the property will be initialized only once.
Ценное замечание. Благодарю
+ цитата из WWDC2016: "lazy properties of your classes aren't atomic either."
Что, на мой личный взгляд, показывает насколько бессмысленно задавать подобные каверзные синтаксические вопросы на собеседованиях.
Во втором примере есть еще один способ объявить реализацию по умолчанию - когда в самом протоколе (не только extension) есть func nameMethod()
. Разница будет видна в таком коде:
let test: NameProtocol = NameClass()
test.nameMethod()
При реализации собственного инициализатора memberwise инициализатор пропадает. Нет простого способа вернуть его
Это можно сделать, если вынести init в extension
/struct NameStruct {
let first: String
let second: String
}
extension NameStruct {
init(first: String) {
self.first = first
self.second = "two"
}
}
let nameStruct = NameStruct(first: "1", second: "2") // no error
5 рандомных вопросов на собеседовании iOS разработчика