Комментарии 18
Интересная статья, спасибо! Даже имея опыт разработки, нашел для себя некоторые интересные моменты с которыми не приходилось сталкиваться, но с которыми могу столкнуться в будущем.
тип значение и не может иметь рекурсию на экземпляр самой себя
Может.
indirect enum Optional<T> {
case some(T)
case none
}
struct Node {
var payload: Int
var next: Optional<Node>
}
let node = Node(payload: 16, next: .some(Node(payload: 13, next: .none)))
Да, ценное замечание. Эта возможность появилась в Swift 5.0, а оригинал статьи писался под 4.2
Хотя, строго говоря, все ж нет. Ведь структура ссылается не на себя, а на перечисление, в которую изподвыподверта завернута структура. Но помнить об этой возможности полезно, не спорю.
«Разместите этот код над методом viewDidLoad():
let user = User(name: „John“)
… но оператор print внутри deinit не был исполнен. Значит, этот объект не был освобождён, так как он не вышел из области видимости (scope).»
Очень странно, вообще deinit сработает, так как область видимости у let user — viewDidLoad.
let user = User(name: „John“)
… но оператор print внутри deinit не был исполнен. Значит, этот объект не был освобождён, так как он не вышел из области видимости (scope).»
Очень странно, вообще deinit сработает, так как область видимости у let user — viewDidLoad.
del
Вообще, насколько я понимаю, тут два принципиально разных подхода: Garbage Collector vs. No Garbage Collector. JVM — я правильно понимаю, что там есть сборщик мусора? Ну не было его в Objective C, нет и в Swift. А чудес не бывает, прибирать за собой надо. Есть ARC — и на том спасибо, просто нужно знать его особенности.
Да, и, собственно ответ на вопрос
C++ достаточно распространён?
Swift — единственный язык из распространенных, который не умеет...
C++ достаточно распространён?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Swift: ARC и управление памятью