第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類Y的對象X在Swift中未實現(xiàn)methodSignatureForSelector

類Y的對象X在Swift中未實現(xiàn)methodSignatureForSelector

我有一個類Person被實例化多次。每個人都有自己的計時器。當我在init為Person我打電話startTimer()。class Person { var timer = NSTimer() func startTimer() {    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timerTick"), userInfo: nil, repeats: true) } func timerTick() {    angerLevel++    println("Angry! \(angerLevel)") }......}所以我可能在的數(shù)組中有3個Person實例Person[]。我收到一個錯誤:2014-06-25 13:57:14.956 ThisProgram[3842:148856] *** NSForwarding: warning: object 0x113760048 of class '_TtC11ThisProgram6Person' does not implement methodSignatureForSelector: -- trouble ahead我在其他地方讀過我應該繼承的內容,NSObject但這是在Swift中而不是Obj-C中。該函數(shù)在該類中,因此我不確定該怎么做。
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

不要將其NSObject視為Objective-C類,而應將其視為可可/基礎類。即使您使用Swift而不是Objective-C,您仍在使用所有相同的框架。


兩種選擇:(1)將dynamic屬性添加到要作為選擇器引用的函數(shù)中:


    dynamic func timerTick() {

        self.angerLevel++

        print("Angry! \(self.angerLevel)")

    }

或(2)聲明Person為的子類NSObject,然后只需super.init()在初始化程序的開頭進行調用:


class Person: NSObject {

    var timer = NSTimer()

    var angerLevel = 0


    func startTimer() {

        print("starting timer")

        timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timerTick", userInfo: nil, repeats: true)

    }


    func timerTick() {

        self.angerLevel++

        print("Angry! \(self.angerLevel)")

    }


    override init() {

        super.init()

        self.startTimer()

    }

}


查看完整回答
反對 回復 2019-10-11
?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

我在嘗試使用let encodedArchive = NSKeyedArchiver.archivedDataWithRootObject(archive) as NSData存檔是自定義類的數(shù)組時遇到了類似的錯誤 。我發(fā)現(xiàn)將自定義類聲明為NSObject和NSCoding的子類可以解決問題。它需要更多的行才能符合NSCoding的協(xié)議,因此,它看起來像這樣:


class Person: NSObject, NSCoding {

  init() {

    super.init()

  }


  func encodeWithCoder(_aCoder: NSCoder) {   }

}


查看完整回答
反對 回復 2019-10-11
?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

從XCode6 beta 6開始,您可以使用“動態(tài)”功能


dynamic func timerTick() { .... }


查看完整回答
反對 回復 2019-10-11
  • 3 回答
  • 0 關注
  • 941 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號