2012-10-31 33 views
4

我在IB中爲自定義UIView創建了一個用戶定義的運行時屬性,有趣的是,我可以在touchesBegan:withEvent:方法中訪問它,但不在initWithCoder中:您知道爲什麼嗎?用戶定義的運行時屬性輔助功能

回答

5

這是因爲從IB的意見initWithCoder後完成加載。以下內容將幫助您瞭解過程。它是爲UIViewControllers解釋,但概念是相同的(從ViewController Programming Guide):

當您在故事板創建一個視圖控制器,你 配置在Interface Builder被序列化爲一個存檔屬性。後來, 當視圖控制器被實例化時,該存檔被加載到 內存中並被處理。結果是一組對象,其屬性 與您在Interface Builder中設置的對象相匹配。該檔案由調用視圖控制器的initWithCoder:方法的 加載。

+0

設置當你的觀點,而不是處理它通過這個描述,運行屬性*應*是從傳遞給'initWithCoder'編碼器對象訪問。它們顯然不能在對象上訪問,因爲這是一個init方法,並且尚未創建。如何從編碼器對象訪問這些屬性? – devios1

9

如果您需要訪問值initWithCode:使用awakeFromNib