ios – parsingNSObjCRuntime,NSZone和NSObject中的问题
我正在使用AddThis在我的iOS应用程序中添加共享选项。
我已经导入了类,并将-fno-objc-arc标志添加到所有导入的类,因为它们不使用ARC。
但是,当我尝试运行该应用程序时,我得到了一堆parsing问题,例如:
Expected identifier or '(' Unknown type name 'NSString' Unknown type name 'Protocol' ...
这些错误发生在NSObjCRuntime,NSZone和NSObject。 我也有必要的框架。 有任何想法吗?
包括这个图像,如果有帮助:
当我尝试将C代码(.h和.c)与Objective-C代码混合使用时,我在项目中遇到了同样的问题。 find问题的原因:
检查您的.pch文件以确保每个Objective-C框架#import(例如#import <UIKit/UIKit.h>
)都包含在:
#ifdef __OBJC__ #endif
如果它们不在这个条件范围内,编译器会尝试将Objective-C框架导入到C源代码中。
希望有所帮助。
我只是将Base64Transcoder.c的文件名更改为Base64Transcoder.m,现在项目编译。 我不知道为什么这可以解决这个问题,但它的工作原理。
当我的项目包含.cpp文件时,我遇到了同样的问题。
如果.cpp文件不包含ObjectiveC框架(例如)它必须是“Default-C ++ Source”types
,
但如果.cpp文件有ObjectiveC框架 – 它必须是“Objective-C ++ Source”
我有同样的问题,使用C和C ++代码与目标C,我没有.pch最简单的解决scheme是进入您的生成设置 – >自定义编译器标志并将“其他C标志”设置为“-x目标-c“并将”其他C ++标志“设置为”-x objective-c ++“
这将使xCode 7.2的伎俩
TLDR:如果您的PCH文件正常,请查看您的CPP文件标题以查看是否意外地为Objective C对象包含了任何标题。
细节:我得到了这个,因为我不小心在C ++类头中包含了一个Objective-C类头。 结构是这样的:
Compass.h定义了一个纯粹的Objective C类。
ActionTracker.h定义了一个可以理解Objective C构造的C ++类(通过ActionTracker.mm)。
HelloWorld.h定义了一个纯粹的C ++类。
在我的原始设置中,HelloWorld.h包含了ActionTracker.h,但是由于ActionTracker.h还没有包含Compass.h,所以这是可以的。 后来,我改变了我的代码,并在ActionTracker.h中包含了Compass.h,然后把它拉到HelloWorld.h中,我得到了这些错误。
当我试图将info.plist文件从一个目录移动到另一个时,我遇到了同样的问题。 这不知何故触发了XCode编辑该目标的构build阶段,并显着增加了“编译源”和“复制束资源”的数量。
幸运的是,我的项目有多个目标,我用于testing,(即应用程序演示,应用程序开发,本地应用程序,应用程序1.1,应用程序1.2等)
所以我只复制了一个未受影响的目标,并重新命名(也重命名了包标识符和构buildscheme),这显然解决了我的问题,因为它不是整个项目受到影响,而只是特定的目标。
如果您想尝试我的解决scheme,请尝试从头开始创build新的目标,或复制并重命名您的任何未受影响的目标。
- 不能将types'System.Collections.Generic.IEnumerable <AnonymousType#1>'隐式转换为'System.Collections.Generic.List <string>
- 在Ubuntu中找不到X11 / Xlib.h
- 解除指向不完整types的指针
- FBSOpenApplicationErrorDomain代码= 3
- 问题sorting使用成员函数作为比较
- Xcode“使用未声明的标识符”错误,编译/运行就好了
- ImportError:没有模块命名请求
- 条件运算符的返回types和两阶段查找
- 编译器错误C3493:'func'不能隐式捕获,因为没有指定默认捕获模式