ios - NSObjCRuntime,NSZone和NSObject中的解析问题

sol*_*eil 39 compiler-errors addthis ios automatic-ref-counting

我正在使用AddThis在我的iOS应用中添加共享选项.

我已导入类并将-fno-objc-arc标志添加到所有导入的类中,因为它们不使用ARC.

但是,当我尝试运行应用程序时,我得到了大量的解析问题,例如:

Expected identifier or '('
Unknown type name 'NSString'
Unknown type name 'Protocol'
...
Run Code Online (Sandbox Code Playgroud)

这些错误发生在NSObjCRuntime,NSZone和NSObject中.我也包含必要的框架.有任何想法吗?

如果有帮助,请包括此图片: 图片

hor*_*cex 127

当我尝试将C代码(.h和.c)与Objective-C代码混合时,我在项目中遇到了同样的问题.找到问题的原因:

检查.pch文件以确保每个Objective-C框架#import(例如#import <UIKit/UIKit.h>)都包含在:

#ifdef __OBJC__

#endif
Run Code Online (Sandbox Code Playgroud)

如果它们不在此条件范围内,编译器将尝试将Objective-C框架导入C源代码.

希望有所帮助.

  • 谢谢!追随者,也要确保不要#define NSStrings或const.在__OBJC__块之外的NSNumbers! (4认同)
  • 非常感谢你,在这里救了我几个小时的头痛!您不得不怀疑问题是否是您尝试将Objective-C框架导入到c代码中为什么他们不这么说?为什么XCode会产生毫无意义的隐秘错误消息?不管怎样,谢谢!!!是的,我将所有导入都放在ifdef中的.pch文件中,这一切都奏效了. (2认同)

sol*_*eil 21

我刚刚将Base64Transcoder.c的文件名更改为Base64Transcoder.m,现在项目编译.我不知道为什么这会解决问题,但它确实有效.


gaR*_*Rik 16

当我的项目包含.cpp文件时,我遇到了同样的问题.

如果.cpp文件不包含ObjectiveC框架(例如),则必须使用"Default-C++ Source"类型

在此输入图像描述,

但如果.cpp文件有ObjectiveC框架 - 它必须是'Objective-C++ Source'

在此输入图像描述


Bas*_*ien 16

我有同样的问题,使用C和C++代码与目标C,我没有.pch最简单的解决方案是进入您的构建设置 - >自定义编译器标志并将"其他C标志"设置为"-x objective -c"并将"其他C++标志"设置为"-x objective-c ++"

这将通过xCode 7.2完成