//大全
//讀取數據庫數據 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource:@"database" ofType: @"sqlite"]; NSLog(@"===================================%@",sourcepath); NSFileManager *filemanager=[NSFileManager defaultManager]; NSString *documentsDirectory= [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]; NSString *topathstr=[NSString stringWithFormat:@"%@/database100.sqlite", documentsDirectory]; NSError *error=nil; if (![filemanager fileExistsAtPath:topathstr]) { if ([filemanager copyItemAtPath:sourcepath toPath:topathstr error:&error] != YES) { NSLog(@"---------Unable to copy file: %@", [error localizedDescription]); } else { NSLog(@"移動成功"); } } else { NSLog(@"文件存在"); } }
//根據字符串得到新的長度
NSString *value=text.text; //根據字符串得到新的長度 CGSize size = [value sizeWithFont:[UIFont boldSystemFontOfSize:15]constrainedToSize:CGSizeMake(4500.0f, 100000)lineBreakMode:UILineBreakModeCharacterWrap]; label.frame= CGRectMake(0.0f, 61.0f, size.width, size.height);//顯示字符串的label label.text=value; [text resignFirstResponder];
錯誤總結
incompatible pointer types assigning to 'h' from 'h2' 不兼容的指針類型 賦值給“h”從“h2”
下面要的錯誤一定要盡量避免,否則發生了就不容易發現。 BooL型在porperty描述的時候一定要用assign NSString類型描述使一定要用copy且只有着一個,NSMutableString描述時用還用retain,delegate描述時用assign。其他的非基本類型描述的時候都用retain,描述基本類型的時候用assign
#define 時后面不加分號 @class 時后面加分號。
當進行調試 的時候除了用斷點調試外,還可以用斷言。詳細見sqlit NSAssert([nameSection count]>0, @"[nameSection count]");
當拖拉的控件中有UITableVIew或者UIPickerVIew的時候,一定要把它的delegate和dataSource連接起來,並且在類中實現代理方法,不然運行的時候會出現系統崩潰的現象。
當出現系統崩潰時,如果沒有提示明顯的錯誤,則有兩個可能
1,內存釋放過度,早成內存泄露 2,在打印輸出或者stringformate時,格式化字符串的格式寫錯了。 一定要記得 當對bool型進行輸出或者格式化的時候一定要用%d。因為bool型的本質是輸出0和1。 總的來講是打印輸出錯誤,所以要把所有的打印輸出注釋掉。
當點擊按鈕,按鈕上添加的事件不能觸發時。一,方法寫錯;二,按鈕所在的視圖被設置為不可交互的。
BOOL型默認為NO,即0;
Local declaration of 'm' hides instance variable 本地關於m的聲明隱藏了實例變量 錯誤原因:.h聲明了一個變量,在.m的方法里又聲明
Control reaches end of non-void function 返回值不為空的方法到結束時還沒有return
instance variable 'name' accessed in class method 實例變量名'name‘ 在一個“類方法”(+號方法)里被使用。 原因:靜態方法訪問了非靜態屬性(.h聲明的那些屬性)即這個方法是加號方法卻使用了變量。
People may not respond to '-ok' People這個類不能夠響應 ok這個方法
seg undeclared(first use in this function) seg沒有聲明(第一此在這個方法里使用)
警告:1,incomplete implementation of class “WidgetAppDelegate” //沒有完成這個名字叫“WidgetAppDelegate”這個類的實現, 2,Method definition for “-segmentControl” not found //針對 segmentControl這個方法的定義居然沒有找到 錯誤原因:比如.h聲明一個方法,但在.m中沒有將其實現
case CNTAG: expected ':' or '...' before ';' token 這個錯誤的原因是因為 CNTAG宏定義的時候后面加了分號。
incompatible Objective-c types 'struct UIImage *', expected 'strct UIView *'
不兼容的Objectvie-c語法類型, “UIImage *”表示這個指針的類型UIImage不兼容 需要是UIView指針類型。
Uncomplement MainViewController 警告,並且警告標識在結尾的@end處,是因為在。h中定義了屬性或者方法,但是在。M中卻沒有使用。
在聲明協議的時候,提示cannot find protocol declaration for 'CustomAlertViewDelegate' 是因為在兩個view相互導入造成交叉導入。詳細見5。13號課程。
Object cannot be set -either readonly property or no setter found;是因為沒有進行property和systhesize描述,或者是屬性名寫的不一致。
Unrecoginised selector sent to instance ox6c11060 控制台報這個錯誤,表示對象調用了一個不能識別的方法。
-[UIView setImage:forState:]: unrecognized selector sent to instance 0x4b602a0 這個錯誤是因為 獲取的tag值和按鈕設置的tag值不一樣。這個錯誤是因為獲取的第一個tag值是0,而tag值為0,表示要從根視圖view上面開始查找。並且調用方法。而
[currentBtn setImage:img forState:UIControlStateNormal];調用的方法是根視圖所沒有的。
[NSCFString count]: unrecognized selector sent to instance 0x93ac' 即一個對象調用了它沒有的方法:原因有1,沒有這個方法即方法名寫錯了,或者方法沒有實現,2,調用此方法的對象沒有這個方法。 或者是 調用該方法的對象獲取錯誤。
如果給一個變量賦值然后報警告,則是因為在對基本型聲明變量的時候加了*號。 此時解決的辦法是調用下面的方法: (BOOl)instancesRespondToSelector:selector 用來判斷指定的類型實例時是否響應selector方法。
[__NSArrayI objectAtIndex:]: message sent to deallocated instance 0x4e6aff0 這個錯誤是因為在聲明數組的時候沒有對數組進行retain,造成系統崩潰。 _shengxiaoArray = [[NSArray arrayWithObjects:@"鼠",@"牛",nil] retain] ; 因為 shengxiaoArray屬性在它聲明的方法之外還要使用。所以必須進行retain。如果只在一個方法中使用,可以不用retain。也不會報錯。
-[NSArray objectAtIndex:]: index 4294967295 beyond bounds [0 .. 11]' 數組越界。 原因有以下:1,可能是調用此數組的對象寫錯了,或者是不能調用這個數組。 2,數組越界。NSArray不單指文件中出現的NSArray,也可以指NSArray的對象。
當進行輸出打印的時候如果系統並沒有進行輸出打印不再往下執行,並且在控制台也沒有提示什么錯誤。這可能是因為打印輸出的時候,輸出的類型寫錯了。
當點擊一個按鈕發現沒有作用時,可能有兩個原因:1,如果是拖拉的控件,沒有進行關聯;如果是寫的代碼,按鈕沒有調用target方法;2,方法沒有被調用 ;3 ,target后面是self參數寫錯了,或者沒有寫。也就是說沒有調用者調用方法。
WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <TableTestViewController: 0x4e71400>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release. 報這個警告的原因是所使用的方法相對於模擬器的版本有些過時。
Excepted specifier-qualifier-list before 'Detail' 這個錯誤是因為沒有把頭文件導入到。H文件中。
[_array removeObjectAtIndex:[indexPath.row]];Excepted ':' before ' ] ' token這個錯誤是因為[indexPath.row] 中多了一個[]號,因為[]中一般都是對象調用方法,而不是調用屬性。而此處需要傳遞的是一個數。所以修改如下 [_array removeObjectAtIndex:indexPath.row]或者 [_array removeObjectAtIndex:[indexPath.row]];
當拖動單元格的表出現很卡的現象,可能是因為在創建單元格的時候有些可以放到if(cell == nil)中的語句,卻放到了if語句外邊,這樣的話導致每次都要執行單元格上面顯示的內容,比較浪費內存。如果放到if語句內的話,在創建單元格的同時就把這些內容也創建了,只執行一次。
Incompatible Objective-C types initializing 'struct UITableViewCell *' excepted 'struct myCell*' myCell不能初始化 UITableViewCell 所以要進行強制類轉換,可以解決這個警告。
WriteToFile:atomically: deprecated 這個警告表示所WriteToFile:atomically: 方法過期了,不過不影響程序。
Assignment makes pointer from integer without a cast; 這個錯誤是沒有標記無法將整型數轉化為指針。 給變量賦的值和變量的類型不對,需要進行強制轉換或者改變變量的類型,或者改變所賦的值。
Property 'number' with 'retain' attribute must be of object type 這個是因為int類型為基本型,在進行property描述的時候必須用assign。而不是retain,不過在進行描述的時候可以只用property()括號內的東西可以省略。因為括號中的東西是提高性能。
expected specifier-qualifier-list before 'ThreadTestViewController' 是因為頭文件出現了交叉導入。在一個文件中寫@class時格式如下:@class myThread; pointer targets in passing argument 1 of 'read:maxLength:' differ in signedness 報這個警告是因為類型不匹配。
loaded the "NQselectLanguageForMenue" nib but the view outlet was not set.'這個錯誤的原因是在xib中view視圖沒有進行關聯。
request for member 'nameLabel' in something not a structure or union (cell.nameLabel.text = dish.name;) 這個錯誤的原因是用的是自定義的cell,但是在生成cell時卻生成的是UITableViewCell 的cell,而不是自定義的cell。即錯誤的將下面聲明cell對象的類寫成了UITableViewCell.或者是兩個類的名字相同。 NQmenueTableViewCell *cell = (NQmenueTableViewCell *)[tableViewdequeueReusableCellWithIdentifier:cellIdenifer];
當提示一些非正常性的錯誤時,例如本來是系統自動生成的方法卻提示錯誤,可能是因為上面的一個方法少了一個大括號。
[UIBUttonLable Model]: unrecognized selector sent to instance 0x4cba080'; -[NSCFString menuName]: unrecognized selector sent to instance 0x4cba080' 這個錯誤的意思是:一個字符串調用了一個對象,找不到這個方法。 btn.btnMenuNameString = menuObj.menuName; 此處相當於調用了menuName的@synthesize方法即get方法。
"_OBJC_CLASS_$_MovieInfo2", referenced from: objc-class-ref-to-MovieInfo2 in NQoneListViewController.o ld: symbol(s) not found 這是因為編譯的時候沒有把這個文件放到Targets-》CompeleSource下生成的編譯文件中,所以只要把缺少的$_MovieInf。m文件直接拖到這個文件夾下即可 |