[轉]ios錯誤大全


//大全

 

//讀取數據庫數據

-(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.0f100000)lineBreakMode:UILineBreakModeCharacterWrap];

label.frameCGRectMake(0.0f61.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:@"鼠",@"牛",nilretain] ;

因為 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文件直接拖到這個文件夾下即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM