在写这篇文章之前,首先需要说明一下我所记录问题的产生地--来自Objective-c基础教程(第二版)书中例子演练。
这个问题提示,是在我运行书中第三章shapes-object程序时产生的。
在书中,首先介绍了传统的面向过程编成的方法,继而介绍了obj-c面向对象的编程方法,是一个简单的画图程序(其实在这里的实现很简单,只是显示在某个坐标矩形框内显示某个颜色图形,如红色的原型、绿色的矩形、蓝色的椭圆等)。正常的输出例子应该如下:
2015-03-19 21:06:46.104 shapesObject[414:6731] drawing a circle at (0,0,0,0) in red
2015-03-19 21:06:46.106 shapesObject[414:6731] drawing a rectangle at (1,1,1,1) in green
2015-03-19 21:06:46.107 shapesObject[414:6731] drawing an egg at (2,2,2,2) in blue
2015-03-19 21:06:46.107 shapesObject[414:6731] drawing a Triangle at (3,3,3,3) in blue
Program ended with exit code: 0
但是第一遍运行时,我发现运行失败,有许多类似于 Implicit declaration of function ‘drawShapes’ is invalid in C99 和 conflicting types for ‘drawShapes’ 之类的错误提示,后来发现可能原因如下:
1.没有先做函数声明,而函数位于main()之后。在main函数声明前声明了函数原型之后,就可以解决该问题。
2.在自己声明的某些方法的顺序上出了问题。比如该方法中调用了某个类,但是该类的接口声明在方法之后。将类接口声明放在方法之前,就搞定。
3.类的.h文件里的声明和.m文件中的定义参数有差别。
排查上述原因后,该错误提示就可以解决。