gpt4 book ai didi

ios - 为什么使用 'lazy var' 创建实例时会出现编译器错误?

转载 作者:行者123 更新时间:2023-11-30 11:07:57 24 4
gpt4 key购买 nike

在 ViewController.swift 中 - 我在类的开头声明了一个惰性 var 游戏,但仍然收到错误

Cannot use instance member 'cardButtons' within property initializer; property initializers run before 'self is' available

import UIKit

class ViewController: UIViewController {

lazy var game = Concentration(numberOfPairsOfCards: (cardButtons.count + 1) / 2)

@IBOutlet var cardButtons: [UIButton]!

var emojiChoices = ["🍆", "💩", "🍆", "💩" ]

@IBAction func touchCard(_ sender: UIButton) {
flipCount += 1
if let cardNumber = cardButtons.index(of: sender) {
flipCard(withEmoji: emojiChoices[cardNumber], on: sender)
} else {
print("Chosen card not in cardButtons")
}
}
}

这是“浓度”类,我正在尝试创建它的实例 导入基础

class Concentration {

var cards = [Card]()

init(numberOfPairsOfCards: Int) {
for _ in 1...numberOfPairsOfCards {
let card = Card()
cards += [card, card]
}
}
}

最佳答案

这看起来像是最近斯坦福大学 iOS 类(class)中的示例项目。无论如何,你的惰性变量的语法看起来不正确。

改变

lazy var game = Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)

lazy var game : Concentration = { 
return Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)
}()

但是,访问另一个变量 (cardButtons.count) 的值虽然在当前代码中可能没问题,但如果在引用游戏之前未初始化 cardButtons,则可能会在以后引入问题。

关于ios - 为什么使用 'lazy var' 创建实例时会出现编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com