Я столкнулся с каким-то старым кодом Swift (плохо написано с того момента, когда я впервые играл с языком в июне), и мне было любопытно, почему функция test
терпит неудачу, но test2
работает?Быстрая слабая переменная поведенческая разница?
fatal error: unexpectedly found nil while unwrapping an Optional value
Его глупый пример как self.node потребует добавления в сцену. Я был просто любопытно, почему они ведут себя по-другому, я думаю, что это, возможно, так, как каждый из них реализован, или способ, которым корреспондент обрабатывает каждого, зная правильное использование.
class GameScene: SKScene {
weak var node: SKNode!
weak var color: SKColor!
func test() {
self.node = SKNode()
print(self.node) // Why nil here?
}
func test2() {
self.color = SKColor()
print(self.color) // Works fine ...
}
}
Я понимаю, что объекты создаются в рамках функции и присваивается переменной, объявленной как слабые, его о том, почему разница?
Большое спасибо, я проверю это. Спасибо, Sir – fuzzygoat
Можете ли вы вставить абзац/объяснение, на которое вы ссылаетесь, единственное, что я могу найти в связанном документе: «Слабые ссылки должны быть объявлены как переменные, чтобы указать, что их значение может измениться во время выполнения. объявленной как константа ». – fuzzygoat