搜尋

首頁  >  問答  >  主體

objective-c - iOS: encode非空枚舉型別時發生空指標引用?

#結構大概就是這樣的,A 類別中包含一個B 類別的陣列,B 類別包含一個枚舉類型的C的變數,
A 在一開始初始化的時候就做瞭如圖的初始化了10個B 元素出來,除此之外再沒有修改過A 類別中的B 數組,然而在encode B 中的s 時,(枚舉C 即是Status),能好好的打印出s 的值
,但是在encode (s)之後就報錯了(我在print 和encode 兩句都打上了斷點,後者剛一離開就崩潰)

func encode(with aCoder: NSCoder) {
        print(status)
        aCoder.encode(status, forKey: "status")
    }

以下是部分控制台資訊:

Normal
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_SwiftValue encodeWithCoder:]: unrecognized selector sent to instance 0x60

同時 AppDelegate 頂端還有Thread 1: signal SIGABRT 字樣.谷歌了一下好像是因為對像被提前釋放了,但是在 encode 之前明明還能打印出值來

可以打出值,但是值不是所期望值,在編碼前的一個循環裡,逐個地將A 類B 數組的每個B 的枚舉類型的值給更換了(並非是直接替換掉對象B)
淡淡烟草味淡淡烟草味2737 天前884

全部回覆(1)我來回復

  • 阿神

    阿神2017-05-31 10:38:30

    已經找到原因了,原因就是枚舉類型直接編譯會產生各種問題,曲線救國存讀枚舉的值就行了

    回覆
    0
  • 取消回覆