PCH文件中的iPHONE IOS SDK奇怪警告

hog*_*olo 0 objective-c ios4

我不认为我在这里给出任何Apple秘密,所以我会问.我的.pch文件如下所示:

#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <Availability.h> 
    #import <UIKit/UIKit.h>
    #import "DejaViewAppDelegate.h"
#endif
Run Code Online (Sandbox Code Playgroud)

因此,第2行会出现一条警告:"此项目使用的功能仅适用于iOS SDK 4.0及更高版本."

当#import Availability.h在ifndef语句之后出现时,SDK警告将回显ifndef警告.在#nmport Availability.h之前,它不会在idndef之前发出警告.

有什么理由吗?

omz*_*omz 6

在标准项目模板中,<Availability.h>是第一个导入.这是有道理的,因为这__IPHONE_4_0是定义的地方.

顶部的宏检查是否IPHONE_4_0已定义,如果不是,则发出编译器警告.由于宏稍后定义(通过导入<Availability.h>,您会看到编译器警告.