簡體   English   中英

正確調試XCode上的IPhone應用程序

[英]Correctly debugging IPhone Apps on XCode

下面的行有一個錯誤,你能用肉眼看到它嗎?

NSString *title = [sender titleForState:UIControlStateNormal];
NSString *newText = [[NSString alloc] initWithFormat:"%@ button pressed.", title];

當Iphone模擬器執行此行時,它會在沒有任何其他信息的情況下崩潰 我一定錯過了有關調試的內容。 控制台沒有給我看。

我能夠弄清楚錯誤, 我的問題與此無關 我的問題是為什么我在沒有XCode幫助的情況下遇到了嚴重的崩潰。 沒有任何線索,在我意識到自己的拼寫錯誤之前,我花了5分鍾。

有什么建議么? 或者在為iPhone編程時我只需要小心處理錯別字?

編輯:我猜有些人沒有像我一樣立刻看到它。 錯誤是字符串常量缺少'@'。 所以現在我的問題是為什么XCode / Simulator沒有向我顯示任何類型的錯誤消息,只是崩潰沒有任何線索。 我錯過了有關調試的內容嗎?

Objective-C沒有強烈驗證您在編譯期間或在運行時傳遞給消息的參數是正確的類型。 它應該會給你一個警告。 在這里傳遞ac字符串而不是NSString。 因為NSString是對象(因此使用指針引用),所以當您使用簡單字符串提供它時,您的方法將其用作指針。 然后,您可能嘗試訪問無法訪問的內存塊...

我想你在“%@按鈕按下”之前錯過了@ 正確的應該是:

NSString *newText = [[NSString alloc] initWithFormat:@"%@ button pressed.", title];

所有常量的NSString應該是@"SOMETHING HERE";

檢查編譯警告。 這就是你所需要的。 在您正在展示的案例中,您將收到適當的警告,提醒您該行可能發生的不良事件。

編譯代碼時出現以下錯誤:

error: cannot convert 'const char*' to 'NSString*' in argument passing

不知道你需要做什么才能告訴你,我正在使用Obj-C ++。

嘗試在目標的構建設置下將“-Wall”添加到“OtherWarningFlags”

暫無
暫無

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

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