iOS 引用C++ 引起NSObjCRuntime, NSZone, and NSObject报错

今天在做项目的时候引用了一个第三方类,由于是用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

这样就不会引起那个错误了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值