今天在做项目的时候引用了一个第三方类,由于是用C++写的,在编译的时候出现了很多错误,主要是 NSObjCRuntime, NSZone, and NSObject报错,
图片如下,由于已经解决就在网上找了张一样错误的图
这个引起的原因就是在pch文件中的声明被.mm引用了,才引起NSObjCRuntime的错误。
解决办法就是在引用文件的前后加上一个判断
#ifdef __OBJC__
引用头文件
#endif
但是当我将自己的头文件这样做好之后还是有错误,这次就有NSObjCRuntime这一个文件出错,找了很多地方但都不是,最后看信息应该也是pch的原因
在我的pch文件中有一段代码是批量注释NSLog的
#if 0
#define NSLog(FORMAT, ...) fprintf(stderr,"[%s:%d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String])
#else
#define NSLog(FORMAT, ...) nil
#endif
如果我改了1和0报错的信息是不一样的,断定是这里的问题 于是删除后OK,解决的了问题。
以后用NSLOG建议用
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
这样就不会引起那个错误了