2010年8月6日 星期五

iPhone 常見錯誤百科全書

有鑑於本人健忘的個性
以及撰寫程式時常犯的壞習慣
還是把一些常見的問題記錄下來

使用initWithNibName的物件一定是繼承UIViewController
-[xxxViewController initWithNibName:bundle:]: unrecognized selector sent to instance 0x5d12345
*** Terminating app due to uncaught exception 'NSInvalidArgumentException'

it caused by xxxViewController don't inherit from UIViewController

@interface xxxViewController : UIView UIViewController {
}

舊版xcode sdk3.1.2 專案在4.0底下執行步驟
1. 在載入專案後,會先看到base sdk missing
2. 在專案上面按右鍵-->Get Info


3. 選擇Build標籤,找到Base SDK切換到 iPhone Device 4.0
    (iPhone Device 3.2 會開啟iPad simulator)


4. 然後要編譯之前下拉左上角選單並選擇Simulator


有一個很無言的蠢狀況,希望大家都不要遇到才好
情境:
ViewControllerA想要傳遞一個參數給ViewControllerB
並且程式將由ViewA-->ViewB
ViewControllerA中某個function
{
    ViewControllerB * viewb = [[ViewControllerB alloc]
                               initWithNibName:@"viewcontrollerb"
                               bundle:[Bundle mainBundle]];
    //notice: 下面的動作絕對會做白工,一定要確定controller已經移轉才會正確
    //viewb.TestLabel.text = @"the text will be null";
    //push the controller from A to B
    [self.navigationController pushViewController:viewb animation:YES];

    //notice: pass your data here
    viewb.TestLabel.text = viewa.InputField.text;
}

 有時間我就繼續update吧,不然每一篇的篇幅都太短
 像灌水文章就不好了 :)

2010/09/30 UPDATES:
升級xcode sdk 到4.1 編譯時發現NSErrorFailingURLStringKey會出現Deprecated的警告
查詢一下官方文件: NSError Class
修改成NSURLErrorFailingURLStringErrorKey就好了

2011/04/14 UPDATES:
有了error  message在遇到的時候秀在log裡面確實是不錯啦
只不過好像還少了點什麼...
到底這些error message代表意義是什麼,總不能期待每次遇到了才來處理吧
該去哪裡找這些information 好在處理error時不會有遺漏的呢?
追溯一下 NSURLError.h然後再找到CFNetworkErrors.h這個標頭檔
酷吧~通通都一清二楚囉:)

2011/10/24 UPDATES:
如果出現了modifying layer that is being finalized的錯誤問題
通常就是有重複release UI所導致的
檢查看看並且把[button removeFromSuperview] 置換 [button release]
舉凡UIView都是一樣的處理方式囉~

發現一個MutableArray無法add object,
那應該就要檢查看看是否忘記做初始化的動作.
[[NSMutableArray alloc] init]; 
初始後Array就不會是nil (0x0)自然就能add object了

沒有留言:

張貼留言

內容回應