Überschreiben Sie einen Setter im Handumdrehen
Ich habe ein seltsames Problem mit dem Setter im Handumdrehen. Ich habe eine Klasse-Spielkarte mit folgendem Code:
var rank: NSInteger {
get{
return self.rank
}
set(rank){
self.rank = rank
}
}
var suit: NSString {
get{
return self.suit
}
set(suit){
self.suit = suit
}
}
init(suit: NSString, rank: NSInteger) {
super.init()
self.suit = suit
self.rank = rank
}
Ich verwende diese init () -Methode in einer anderen Klasse, und die Implementierung sieht folgendermaßen aus:
init() {
super.init(cards: [])
for suit in PlayingCrad.validSuit() {
var rank: Int = 0
for rank; rank <= PlayingCrad.maxRank(); rank++ {
var card = PlayingCrad(suit: suit, rank: rank)
addCard(card)
}
}
}
Und wenn der Code wie oben aussieht, ist ein Fehler aufgetreten:
self.suit = suit
EXC_BAD_ACCESS(code=2, adress=0x7fff5c4fbff8)
Aber als ich Setter und Getter abgenommen habeRang undpassen Attribut es hat gut funktioniert, hat sich kein Fehler gezeigt.
Können Sie mir erklären, warum das so ist?EXC_BAD_ACCESS Fehler ist aufgetaucht?
Danke für deine Hilfe