簡體   English   中英

initwithNibName:和viewDidLoad之間的“'NSInvalidArgumentException',原因:'-[UIButton intValue]:無法識別的選擇器發送到實例”

[英]“'NSInvalidArgumentException', reason: '-[UIButton intValue]: unrecognized selector sent to instance” between initwithNibName: and viewDidLoad

我有一個相當簡單的應用程序(我的第一個非平凡的iOS應用程序),我已經使用了一段時間。 我已經完成了該應用程序的工作,但是我今天早些時候決定重構它,使其更好地適應OO設計原則(為了簡單起見,我將大部分應用程序放入了主視圖控制器中;我回去嘗試將其拆分為第二類)。 現在,每當我嘗試運行我的應用程序時,在加載主視圖之前都會出現以下錯誤,導致崩潰:

IntervalPlayer[1374:907] -[UIButton intValue]: unrecognized selector sent to instance 0x1c5569d0

通過在各處拋出打印語句,我可以知道我通過了initWithNibName:bundle:OK,但是應用程序在調用viewDidLoad之前崩潰了。 顯然,我代碼中的某些內容正在嘗試在UIButton上調用intValue,但是我的代碼中沒有任何東西可以做到這一點-我在整個應用程序中只使用過一次intValue,並且在注釋掉該行時遇到了相同的錯誤。 實際上,在嘗試調用超類構造函數之后,我嘗試注釋掉initWithNibName:bundle:中的所有內容,並且在同一位置遇到相同的錯誤。 因此,換句話說,據我所知,在我的應用程序中的任何其他內容沒有運行之前,空構造函數中的某種情況導致在UIButton上調用intValue。 我在委托人或筆尖中假設了它,但是我已經仔細檢查了兩者,但沒有發現任何異常情況。 有沒有人碰到過這樣的事情?

原諒缺少代碼段,我不確定我會提供什么來說明這一點。 這是空的構造函數,仍然會發生錯誤:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)aBundle
{
    self = [super initWithNibName:(NSString *)nibName bundle:(NSBundle *)aBundle];
    if (self) {
    }
    return self;
 }

如果有人可以建議添加任何其他代碼,我將編輯問題來添加。

謝謝,

編輯:是的,我正在使用ARC。 另外,需要澄清的是,這是在我的主視圖控制器中發生的,我沒有碰到委托。

編輯2:崩潰發生在我的代表中; 根據調試器,問題所在的行是[self.window makeKeyAndVisible]; 既然我沒有碰過代表,我的猜測是NIB某種程度上是無效的。

最終編輯:通過刪除按鈕直到找到導致崩潰的按鈕,然后將其掛接到視圖控制器中連接到的所有內容上,我發現當按鈕連接到UIButton插座時它崩潰了,而不是不是的時候崩潰。 我卸下了插座,重新制作了它,現在可以使用了。 所以我不知道發生了什么,但是我以某種方式解決了它。 非常感謝提出建議的每個人!

在應用程序中打開斷點,以便XCode將向您顯示發生錯誤的行。

  1. 打開斷點導航器
  2. 點擊左下方的+按鈕,並添加一個異常斷點
  3. 剛剛完成
  4. 運行您的應用程序,它將停止在導致問題的代碼行中。

如果您遇到麻煩,請在此處發布導致崩潰的代碼行

我最終遇到了同樣的錯誤和症狀。 重新創建按鈕並重做插座無濟於事。 但是,我並沒有在IB連接上犯錯。

我專心做的是給按鈕的出口tag命名,這給NSInteger屬性起了別名,它與所有UIView的名稱相同。 加載我的NIB時,iOS基本上在某個地方執行[tag getInt] ,但是使用我的按鈕而不是它想要的NSInteger屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM