開始iPhone的Practise Project,其中有很多的問題,先記錄起來,以免以后再犯:
1. EXC_BAD_ACCESS: 發(fā)生場景1:一個指針轉了兩次,release了兩次,其實只要release一次就可以?;蛘哂弥羔槙r避免到處賦值。 發(fā)生場景2:在一個View Controller A里動態(tài)加載另外一個View Controller B, B中無法使用UITableViewDelegate。 2. Debug里出現(xiàn)一批Leaking的警告錯誤: 發(fā)生場景:使用了NSThread造成的。如下調用: [NSThread detachNewThreadSelector:@selector(scheduleTask) toTarget:self withObject:nil]; 那么在-(void) scheduleTask;中比如加入pool管理,即可防止出現(xiàn)此類錯誤: -(void) scheduleTask { //create a pool NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //...your code write here. //release the pool; [pool release]; } 3. 在非主線程中,不要干創(chuàng)建UIView之類的活,而應該放到主線程去做,可以在非主線程里做UIView的顯示更新等操作。 4. 循環(huán)讀取數(shù)據(jù)到數(shù)組時,請不要用以下方式(會報Leaks): while (sqlite3_step(statment) == SQLITE_ROW) { City *city = [[City alloc] init]; //取值
[citys addObject:city];
[city release];
city = nil; } 而應該用如下方式: City *city; while (sqlite3_step(statment) == SQLITE_ROW) { city = [[City alloc] init]; //取值
[citys addObject:city];
[city release];
city = nil; } 5. Xcode 項目連上SCM后,提交時出現(xiàn)“125001 bogus filename ” 錯誤,什么path含有'.',目前尚未解決。 6. 數(shù)據(jù)里定義一個實體對象,不能直接取這個對象的某個屬性。 7.當用以下代碼跳轉View的時候,在跳轉的Controller里需要屏蔽initWithNibName 方法,否則View無法顯示。 代碼 8. 用sqlite時,出現(xiàn)Undefined symbols: “_sqlite3_free”, referenced from: , 類似錯誤,后查詢發(fā)現(xiàn),忘了把把sqlite的庫文件引用來項目里。 9. 關于超時:當用如下方式設置request的timeout時,發(fā)現(xiàn)根本不起作用,timeout依然是默認的240秒。碰到這類問題,可用NSTimer來控制是否超時,然后進行處理。 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URI] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f]; 10.代碼檢查: If you're using xCode 3.2 and above in the build menu you can just select build & analyze, and it will give you the results in the build results. 11. UITableView中,實現(xiàn)該方法時注意- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 如果cell里有新添加的控件,只需要在第一次添加,每次滾動時改變控件里的顯示值即可。 如:代碼 |
|
來自: xue_dong5437 > 《ios》