iOS常见问题 二

一、常见的错误信息
1.  error: 'xxx' undeclared(first use in this function)
    还没有定义(在此函数中第一次使用)。
注:使用某一个变量时,如果使用前还没有定义,会出现该错误。在oc以及c语言中,使用变量前必须先定义它。
这个错误经常出现在忘记进行变量定义的情况下。但是,慢慢拿习惯后,这种错误会出现得很少。反而经常出此种错误的原因是变量名拼写错误,即出现使用的变量名与定义的变量名不一致的情况。
例:

  1. - (int)test {
  2.     int conut = 0;
  3.     return count + 1;//出现变量count与conut不一致。
  4. }
复制代码

正确的写法:

  1. - (int)test {
  2. int count = 0;
  3. return count + 1;//出现变量count与conut不一致。
  4. }
复制代码

2. error: parse error before 'xxx' token
  在‘xxx’之前发生了解析错误。
注:这个是在发生低级失误时才会出现的错误。解析错误的意思是程序语句以oc的语法不能解析。仔细看看发生错误的地方,一定会发现不符合语法的部分。
例:

  1. - (void)test {
  2.     NSString *str = @"This is test"//此处遗漏了分号
  3.     NSLog(@"%@",str);
  4. }
复制代码

3. error: invalid preprocessing directive #xxx
    关键字#xxx不正确。
注:当#include,#import等以#开始的关键字出现拼写错误时,会显示这种错误信息。在Xcode中,紧随#后输入的字符串都会变色,非常容易发生错误。
例:

  1. #improt <Cocoa/Cocoa.h>//拼写错误 #import
复制代码

4. error: xxx.h: No Such file or directory
  名为xxx.h的文件或目录不存在。
注:在#include,#import中指定的文件不存在时会显示此种信息。最可能的原因是,文件名输入错误,好好检查一下文件名。
    如果发生这种错误,最好也确认一下实际文件。因为还有可能是文件的检索路径没有指定正确。只要文件是包含在工程的文件夹中都是没有问题的。
例:

  1. #import "AppContrller.h"//AppContrller.h是不存在的。
复制代码


  符号‘xxx’没有被定义。
注:此错误不仅在编译时发生,在连接时也会发生。连接时使用了原本不存在的类或者函数时会出现此信息。
      最经常出现的是,函数名出现输入错误。调用c语言函数的时候,就算名称错误,编译也会通过的。但是在连接的时候就会出现此错误的信息。
      其他可能的原因是,使用Cocoa以外的框架或者库时,这些框架或者库没有包含进工程中。需要的库或者框架都必须包含到工程中。
二、常见的警告信息
  警告中有绝对需要修正的,也有完全不用理会的。但是,将所有的警告都消去还是让人比较舒服的,所以还是要尽量修改。
1.  warning: 'xxx' may not respond to 'yyy'
    类‘xxx’中没有方法‘yyy’的声明。
注:当调用某一类中的方法时,类声明中并没有包含此方法出现时此信息。首先可能的原因是,方法名输入错误,请仔细检查一下方法名称,确保正确。
例:

  1. NSString *str;
  2. str = [NSString stringWithForatm:@"%d", 10];//方法名称错误。
复制代码

正确的是:

  1. NSString *str;
  2. str = [NSString stringWithFormat:@"%d", 10];
复制代码



2. warning: unused variable 'xxx'
  变量‘xxx’没有被使用。
注:变量已经定义了,但是一次都没有被使用时出现此信息。经常出现的是,曾经使用的变量,经过修改后不再使用它了,但定义还保存着。此时,只用删除变量的定义即可。不删也可以。
    另外,定义的变量名与使用的变量名不一致时,也会出现这个警告信息。
例:

  1. - (int)test {
  2. int a, b;//<span style="background-color: rgb(255, 255, 255);">没有被使用</span>
  3. a = 5;
  4. return a;
  5. }
复制代码


3. warning: local declaration of 'xxx' hides instance variable
    本地变量‘xxx’覆盖了实例变量(即同名)。
注:当方法中定义的变量名与实例变量的某个变量同名,就会显示这个警告信息。因为同名,所有有一方将不能访问。 这时外部的实例变量将不能被访问,将一方变量名修改后即可。
例:

  1. @interface MyObject:NSObject
  2. {
  3. int count;
  4. }
  5. @end
  6. @implementation MyObject
  7. - (void)updateCount:(int)count {
  8. //参数的名称与实例变量名相同。
  9. count = 10;
  10. }
  11. @end
复制代码


正确的是:

  1. @interface MyObject:NSObject
  2. {
  3. int count;
  4. }
  5. @end
  6. @implementation MyObject
  7. - (void)updateCount:(int)num {
  8. //参数的名称与实例变量名相同。
  9. count = 10;
  10. }
  11. @end
复制代码

4. warning: incomplete implementation of class 'xxx'
    warning: method definition for 'yyy' not found
    类‘xxx’的代码编写没有完成。
    方法‘yyy’的定义没有找到。
注:没有给类声明中的某个方法编写执行代码时,会显示此警告信息。出现警告后,该完成的执行代码应该完成,如果觉得这个方法不需要了,可以在类声明文件中删除此方法的定义。另外,如果实际代码处的方法名与定义的方法名出现不一致时,也会出现此警告信息。
5. warning: control reaches end of non-void function
    非void类型的函数没有设置返回值。
注:方法或函数需要返回值的情况下,没有设置任何返回值时出现的警告信息。 返回值类型为void以外的方法中,请务必返回一个具体的值。如果不需要返回值,请将方法的返回值类型修改为void。
    相反,如果返回值设置为void类型,而在函数或方法中返回了某个值的时候,会显示 "'return' with a value, in function returning void(返回void的函数中,返回了值)"的警告。
例:

  1. - (int)test:(int)count {
  2. count++;//<span style="background-color: rgb(255, 255, 255);">需要返回整型值而没有返回任何值</span>
  3. }
复制代码

正确的是:

  1. - (int)test:(int)count {
  2. return count++;
  3. }
复制代码


6. warning: passing argument n of 'xxx' assignment from distinct Objective-C type
    方法‘xxx’的第n个参数与Objective-C的类型不一致。
注:向方法‘xxx’中传递参数时,传递过来的参数对象与方法中声明的参数类型不一致时,会出现此警告。例如,声明的是NSEnumerator类型,传递进来的为NSString类型,则显示此警告。
    最可能发生的原因是,方法的参数较多,设置时将顺序弄错了。在使用参数较多的方法时,出现这个警告信息的情况下,请仔细检查一下参数的顺序。
    另外,在定义方法时可以利用这个警告。如果想将传递过来的参数指定为特定的类时,给参数定义明确的类型。如果任何对象都可以的情况,则定义为id类型。参数的定义包含了类设计者给使用者的信息。
例:

  1. int value = 3;
  2. NSString *str;
  3. str = [NSString stringWithFormat:"%d", value];
复制代码

正确的是:

int value = 3;
NSString *str;
str = [NSString stringWithFormat:"@%d", value];
//在参数字符串前追加@符号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 1. 使用UIImageJPEGRepresentation(image, compressionQuality)...
    loongod阅读 768评论 0 2
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,036评论 29 470
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,015评论 11 349
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,503评论 6 13