- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ios常见的错误与警告
一、常见的错误信息
1.??error:?xxx undeclared(first use in this function)
? ? 还没有定义(在此函数中第一次使用)。
注:使用某一个变量时,如果使用前还没有定义,会出现该错误。在oc以及c语言中,使用变量前必须先定义它。
这个错误经常出现在忘记进行变量定义的情况下。但是,慢慢拿习惯后,这种错误会出现得很少。反而经常出此种错误的原因是变量名拼写错误,即出现使用的变量名与定义的变量名不一致的情况。
例:?
-?(void)test{????int?count?=?0;????return?conut?+?1;//出现变量count与conut不一致。?}?
正确的写法:
-?(void)test{????int?count?=?0;????return?count?+?1;//将变量名count修改成一致。}
?
2.?error: parse error before xxx token
? ?在‘xxx’之前发生了解析错误。
注:这个是在发生低级失误时才会出现的错误。解析错误的意思是程序语句以oc的语法不能解析。仔细看看发生错误的地方,一定会发现不符合语法的部分。
?
例:
-?(void)test
{????NSString?*str?=?@This?is?test?//此处遗漏了分号????NSLog(str);}
3.?error: invalid preprocessing directive #xxx?
? ? 关键字#xxx不正确。
注:当#include,#import等以#开始的关键字出现拼写错误时,会显示这种错误信息。在Xcode中,紧随#后输入的字符串都会变色,非常容易发生错误。
?
?例:
#improt?Cocoa/Cocoa.h??//#import拼写错误
4.?error: xxx.h: No Such file or directory?
? ?名为xxx.h的文件或目录不存在。
注:在#include,#import中指定的文件不存在时会显示此种信息。最可能的原因是,文件名输入错误,好好检查一下文件名。
? ? ?如果发生这种错误,最好也确认一下实际文件。因为还有可能是文件的检索路径没有指定正确。只要文件是包含在工程的文件夹中都是没有问题的。
?
例:
#import?AppContrller.h?//文件AppContrller.h是不存在的。
正确的是:
#import?AppContrller.h
?
?
5.?error: Undefined symbols: xxx
? ?符号‘xxx’没有被定义。
?
注:此错误不仅在编译时发生,在连接时也会发生。连接时使用了原本不存在的类或者函数时会出现此信息。
? ? ? 最经常出现的是,函数名出现输入错误。调用c语言函数的时候,就算名称错误,编译也会通过的。但是在连接的时候就会出现此错误的信息。
? ? ? 其他可能的原因是,使用Cocoa以外的框架或者库时,这些框架或者库没有包含进工程中。需要的库或者框架都必须包含到工程中。
?
?
?
?
二、常见的警告信息?
? 警告中有绝对需要修正的,也有完全不用理会的。但是,将所有的警告都消去还是让人比较舒服的,所以还是要尽量修改。
?
1. ?warning: xxx may not respond to yyy
? ? 类‘xxx’中没有方法‘yyy’的声明。?
?注:当调用某一类中的方法时,类声明中并没有包含此方法出现时此信息。首先可能的原因是,方法名输入错误,请仔细检查一下方法名称,确保正确。
?
例:
NSString?*str;str?=?[NSString?stringWithForatm:@%d,?10];//方法名称错误。
正确的是:
?NSString?*str;
?str?=?[NSString?stringWithFormat:@%d,?10];
另外,在某一类调用自己定义的方法时,如果方法都追加在类声明中的话,不会出现任何问题。如果实际调用的地方在方法定义的前方,也会出现这种警告信息。这是因为编译器对方法定义的检查是从文件的开始处顺序经行的。利用这个特性,如果不想其他类调用方法,可以不用追加在类声明中。
?
例:
有警告:
-?(void)methodA{????[self?methodB];//methodB的定义在后面}-?(void)methodB{}?
无警告:?
?
?-?(void)methodB{}?-?(void)methodA{????[self?methodB];//methodB的定义在前时,不出现警告?}?
?
?如果不理会这个警告会出现什么情况
文档评论(0)