iOS开发中关于import头文件放置位置的tips

      最近在进行iOS开发过程中,遇到一个摸不着头脑的问题。具体描述下:我使用Cocoapods管理了一个第三方库BmobSDK,然后需要在某文件中使用它,当然首先应该import进头文件,由于项目头文件较多,我是这样写的:

#import "AppDelegate.h"
//import其他的头文件;

#define UISCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
//define其他的宏定义;
#import <BmobSDK/Bmob.h>

     此时不添加其他任何代码,编译程序,出现以下错误:



     这个问题出现在BmobSDK的源代码Bmob.h头文件中,方法的定义语法是没有任何问题的,SDK也不会出现这样低级的错误。“Expected '';” after method prototype.  和 "Expected identifier"这样的bug描述也根本让我无从下手。Xcode还出现如下的修改建议,也是让我哭笑不得:

iOS开发中关于import头文件放置位置的tips_第1张图片


      我多次使用Cocoapods进行更新包,确保了BmobSDK的版本是没有问题的。同时我不使用Cocoapods,而是直接把Bmob提供的BmobSDK.framework拖入项目中,也会出现如下问题。那好,这就不禁让我思考,这个应该不是SDK的问题,而是我自身代码或者其他配置的问题。通过多次的测试,终于找到问题所在。现修改import头文件部分如下:


   

#import "AppDelegate.h"
#import <BmobSDK/Bmob.h>
//import其他的头文件;

#define UISCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
//define其他的宏定义;

     问题的关键就是#import语句最好不要写在其他语句后面,比如#import不要写在#define后面,这也是为了从代码规范性考虑。最后根据我的经验,自己项目产生的头文件可以写在#define后面而不会报错,虽然我不建议这么做。而第三方库的头文件根据不同的库,若把有些头文件放在#define后面,就会报一些诡异的错误,就如同我上面所述。所以我建议,一个文件中可以把所有的import文件放在一起,并放置在文件最开头,所有import之后再去放一些#define等等之类的定义。

      总结下,我们不要放过任何一个bug的机会,因为发现并修改任何一个bug,都可以让我们的编程水平提高。




最近开源的iOS应用,高仿印象笔记  https://github.com/chenyufeng1991/iOS-Oncenote 。欢迎大家点赞并关注项目进度。也可以安装到手机上试玩哦。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!



你可能感兴趣的:(ios,Objective-C)