XCode 4.6 中的 Mogenerator 和 ARC
Posted
技术标签:
【中文标题】XCode 4.6 中的 Mogenerator 和 ARC【英文标题】:Mogenerator and ARC in XCode 4.6 【发布时间】:2013-08-12 17:19:12 【问题描述】:根据建议作为最佳实践,我刚刚开始使用 Core Data 将 mogenerator 集成到应用程序项目中。我添加了以下构建脚本,并带有一个支持 ARC 的标志。
mogenerator -m FavesDataModel.xcdatamodeld/FavesDataModel.xcdatamodel --template-var arc=true
脚本成功构建了所有必要的类和子类。当时,我将所有生成的文件复制到我的项目中。最初,我得到了一个干净的成功构建。但是,当尝试另一个构建(不进行任何更改)时,它会失败并出现以下 ARC 错误:
ARC forbids Objective-C objects in structs or unions
错误发生在带有下划线的文件中。有趣的是,当构建脚本按如下方式构建文件时:
extern const struct FavoriteAttributes
__unsafe_unretained NSString *maxCFS;
__unsafe_unretained NSString *maxFeet;
__unsafe_unretained NSString *minCFS;
__unsafe_unretained NSString *minFeet;
__unsafe_unretained NSString *stationIdentifier;
__unsafe_unretained NSString *stationRealName;
__unsafe_unretained NSString *stationState;
FavoriteAttributes;
但是,在成功构建之后,XCode 会删除 __unsafe_unretained 属性。
在开启 ARC 的情况下使用 mogenerator 是否存在已知问题?任何解决方案或解决方法的想法?谢谢! V
【问题讨论】:
__unsafe_unretained
不应该在生成的文件中删除,这听起来很奇怪......
模板变量在解决 ARC 问题时是正确的。您确定 Xcode 使用的是正确生成的类文件吗?您的 mogenerator 命令会将它们放在项目根目录中。
【参考方案1】:
尝试从构建脚本中删除 --template-var arc=true。
然后在 XCode 中,项目属性,编译源,设置问题文件具有以下标志
fno-objc-arc
这将只对那些文件关闭 ARC。
【讨论】:
每次生成新文件时都必须永远添加此参数。以上是关于XCode 4.6 中的 Mogenerator 和 ARC的主要内容,如果未能解决你的问题,请参考以下文章