//讀取數(shù)據(jù)庫數(shù)據(jù)
-(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(@"文件存在");
}
}
//根據(jù)字符串得到新的長度
NSString *value=text.text;
//根據(jù)字符串得到新的長度
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];
錯誤總結(jié)
incompatible pointer types assigning to 'h' from 'h2'
不兼容的指針類型 賦值給“h”從“h2”
下面要的錯誤一定要盡量避免,否則發(fā)生了就不容易發(fā)現(xiàn)。
BooL型在porperty描述的時候一定要用assign
NSString類型描述使一定要用copy且只有著一個,NSMutableString描述時用還用retain,delegate描述時用assign。其他的非基本類型描述的時候都用retain,描述基本類型的時候用assign
#define 時后面不加分號
@class 時后面加分號。
當(dāng)進行調(diào)試 的時候除了用斷點調(diào)試外,還可以用斷言。詳細見sqlit
NSAssert([nameSection count]>0, @"[nameSection count]");
當(dāng)拖拉的控件中有UITableVIew或者UIPickerVIew的時候,一定要把它的delegate和dataSource連接起來,并且在類中實現(xiàn)代理方法,不然運行的時候會出現(xiàn)系統(tǒng)崩潰的現(xiàn)象。
當(dāng)出現(xiàn)系統(tǒng)崩潰時,如果沒有提示明顯的錯誤,則有兩個可能
1,內(nèi)存釋放過度,早成內(nèi)存泄露
2,在打印輸出或者stringformate時,格式化字符串的格式寫錯了。
一定要記得 當(dāng)對bool型進行輸出或者格式化的時候一定要用%d。因為bool型的本質(zhì)是輸出0和1。
總的來講是打印輸出錯誤,所以要把所有的打印輸出注釋掉。
當(dāng)點擊按鈕,按鈕上添加的事件不能觸發(fā)時。一,方法寫錯;二,按鈕所在的視圖被設(shè)置為不可交互的。
BOOL型默認(rèn)為NO,即0;
Local declaration of 'm' hides instance variable
本地關(guān)于m的聲明隱藏了實例變量
錯誤原因:.h聲明了一個變量,在.m的方法里又聲明
Control reaches end of non-void function
返回值不為空的方法到結(jié)束時還沒有return
instance variable 'name' accessed in class method
實例變量名'name‘ 在一個“類方法”(+號方法)里被使用。
原因:靜態(tài)方法訪問了非靜態(tài)屬性(.h聲明的那些屬性)即這個方法是加號方法卻使用了變量。
People may not respond to '-ok'
People這個類不能夠響應(yīng) ok這個方法
seg undeclared(first use in this function)
seg沒有聲明(第一此在這個方法里使用)
警告:1,incomplete implementation of class “WidgetAppDelegate”
//沒有完成這個名字叫“WidgetAppDelegate”這個類的實現(xiàn),
2,Method definition for “-segmentControl” not found
//針對 segmentControl這個方法的定義居然沒有找到
錯誤原因:比如.h聲明一個方法,但在.m中沒有將其實現(xiàn)
case CNTAG: expected ':' or '...' before ';' token 這個錯誤的原因是因為 CNTAG宏定義的時候后面加了分號。
incompatible Objective-c types 'struct UIImage *', expected 'strct UIView *'
不兼容的Objectvie-c語法類型, “UIImage *”表示這個指針的類型UIImage不兼容
需要是UIView指針類型。
Uncomplement MainViewController 警告,并且警告標(biāo)識在結(jié)尾的@end處,是因為在。h中定義了屬性或者方法,但是在。M中卻沒有使用。
在聲明協(xié)議的時候,提示cannot find protocol declaration for 'CustomAlertViewDelegate' 是因為在兩個view相互導(dǎo)入造成交叉導(dǎo)入。詳細見5。13號課程。
Object cannot be set -either readonly property or no setter found;是因為沒有進行property和systhesize描述,或者是屬性名寫的不一致。
Unrecoginised selector sent to instance ox6c11060 控制臺報這個錯誤,表示對象調(diào)用了一個不能識別的方法。
-[UIView setImage:forState:]: unrecognized selector sent to instance 0x4b602a0
這個錯誤是因為 獲取的tag值和按鈕設(shè)置的tag值不一樣。這個錯誤是因為獲取的第一個tag值是0,而tag值為0,表示要從根視圖view上面開始查找。并且調(diào)用方法。而
[currentBtn setImage:img forState:UIControlStateNormal];調(diào)用的方法是根視圖所沒有的。
[NSCFString count]: unrecognized selector sent to instance 0x93ac'
即一個對象調(diào)用了它沒有的方法:原因有1,沒有這個方法即方法名寫錯了,或者方法沒有實現(xiàn),2,調(diào)用此方法的對象沒有這個方法。
或者是 調(diào)用該方法的對象獲取錯誤。
如果給一個變量賦值然后報警告,則是因為在對基本型聲明變量的時候加了*號。
此時解決的辦法是調(diào)用下面的方法:
(BOOl)instancesRespondToSelector:selector 用來判斷指定的類型實例時是否響應(yīng)selector方法。
[__NSArrayI objectAtIndex:]: message sent to deallocated instance 0x4e6aff0
這個錯誤是因為在聲明數(shù)組的時候沒有對數(shù)組進行retain,造成系統(tǒng)崩潰。
_shengxiaoArray = [[NSArray arrayWithObjects:@"鼠",@"牛",nil] retain] ;
因為 shengxiaoArray屬性在它聲明的方法之外還要使用。所以必須進行retain。如果只在一個方法中使用,可以不用retain。也不會報錯。
-[NSArray objectAtIndex:]: index 4294967295 beyond bounds [0 .. 11]'
數(shù)組越界。
原因有以下:1,可能是調(diào)用此數(shù)組的對象寫錯了,或者是不能調(diào)用這個數(shù)組。
2,數(shù)組越界。NSArray不單指文件中出現(xiàn)的NSArray,也可以指NSArray的對象。
當(dāng)進行輸出打印的時候如果系統(tǒng)并沒有進行輸出打印不再往下執(zhí)行,并且在控制臺也沒有提示什么錯誤。這可能是因為打印輸出的時候,輸出的類型寫錯了。
當(dāng)點擊一個按鈕發(fā)現(xiàn)沒有作用時,可能有兩個原因:1,如果是拖拉的控件,沒有進行關(guān)聯(lián);如果是寫的代碼,按鈕沒有調(diào)用target方法;2,方法沒有被調(diào)用 ;3 ,target后面是self參數(shù)寫錯了,或者沒有寫。也就是說沒有調(diào)用者調(diào)用方法。
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' 這個錯誤是因為沒有把頭文件導(dǎo)入到。H文件中。
[_array removeObjectAtIndex:[indexPath.row]];Excepted ':' before ' ] ' token這個錯誤是因為[indexPath.row] 中多了一個[]號,因為[]中一般都是對象調(diào)用方法,而不是調(diào)用屬性。而此處需要傳遞的是一個數(shù)。所以修改如下
[_array removeObjectAtIndex:indexPath.row]或者
[_array removeObjectAtIndex:[indexPath.row]];
當(dāng)拖動單元格的表出現(xiàn)很卡的現(xiàn)象,可能是因為在創(chuàng)建單元格的時候有些可以放到if(cell == nil)中的語句,卻放到了if語句外邊,這樣的話導(dǎo)致每次都要執(zhí)行單元格上面顯示的內(nèi)容,比較浪費內(nèi)存。如果放到if語句內(nèi)的話,在創(chuàng)建單元格的同時就把這些內(nèi)容也創(chuàng)建了,只執(zhí)行一次。
Incompatible Objective-C types initializing 'struct UITableViewCell *' excepted 'struct myCell*' myCell不能初始化 UITableViewCell 所以要進行強制類轉(zhuǎn)換,可以解決這個警告。
WriteToFile:atomically: deprecated 這個警告表示所WriteToFile:atomically:
方法過期了,不過不影響程序。
Assignment makes pointer from integer without a cast; 這個錯誤是沒有標(biāo)記無法將整型數(shù)轉(zhuǎn)化為指針。 給變量賦的值和變量的類型不對,需要進行強制轉(zhuǎn)換或者改變變量的類型,或者改變所賦的值。
Property 'number' with 'retain' attribute must be of object type 這個是因為int類型為基本型,在進行property描述的時候必須用assign。而不是retain,不過在進行描述的時候可以只用property()括號內(nèi)的東西可以省略。因為括號中的東西是提高性能。
expected specifier-qualifier-list before 'ThreadTestViewController'
是因為頭文件出現(xiàn)了交叉導(dǎo)入。在一個文件中寫@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視圖沒有進行關(guān)聯(lián)。
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 *)[tableView dequeueReusableCellWithIdentifier:cellIdenifer];
當(dāng)提示一些非正常性的錯誤時,例如本來是系統(tǒng)自動生成的方法卻提示錯誤,可能是因為上面的一個方法少了一個大括號。
[UIBUttonLable Model]: unrecognized selector sent to instance 0x4cba080';

-[NSCFString menuName]: unrecognized selector sent to instance 0x4cba080'
這個錯誤的意思是:一個字符串調(diào)用了一個對象,找不到這個方法。
btn.btnMenuNameString = menuObj.menuName; 此處相當(dāng)于調(diào)用了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文件直接拖到這個文件夾下即可
愛華網(wǎng)


