我的MoGen命令行(构建阶段)是
mogenerator -m PT1/Data/DataModel.xcdatamodeld -O PT1/Data -–template-var arc=true这应该适用于ARC。然而,在机器类中,我得到了如下内容
extern const struct ClientInfoAttributes {
NSString *accountNumber;
...
} ClientInfoAttributes;这就产生了"ARC禁止结构中的objects对象“的错误。想必我在这里犯了什么错误。有人能指出我的问题吗?
我正在使用iOS7和XCode 5测试版,但这似乎与此无关。不过,这可能是相关的。
-Bob
发布于 2013-08-23 03:20:56
我在用正确的选项来为ARC做发动机。它是--模板-var arc=true,正如您在前面我的问题中所看到的。但是,我从这个博客条目raptureinvenice.com/getting-started-with-mogenerator.复制了命令行。在这篇文章中,网络软件将作者的“.”改为长跑或m-破折号.当我复制和粘贴时,我得到了一个看起来正确但却不是的破折号。mogen软件目前没有将此标记为错误。它只是默默地忽略了它。
当我最后重新输入-从零开始,它正确地工作了。使用__unsafe_unretained防止编译器错误。
博客作者已经修复了博客条目,我已经向mogen项目提出了一个问题,以便在将来报告这种类型的错误。
发布于 2013-08-23 00:10:07
我怀疑命令很重要。使用
模板-var arc=true -m PT1 1/Data/dataModel.xcdatamodeld -O PT1/Data
关于错误,这是不言自明的。
电弧禁止结构中的目标-C对象
正如clang文档中所解释的那样
4.3.5所有权-结构和联合的限定领域 如果程序声明C结构或联合的成员具有非琐碎的所有权限定类型,则程序的格式是错误的。 基本原理 结果类型在C++意义上是非POD的,但是C没有给我们很好的语言工具来管理聚合的生命周期,所以简单地禁止它们更方便。仍然可以使用
void*或__unsafe_unretained对象来管理这一点。
因此,正如文档所示,快速而肮脏的解决方案是将对象声明为__unsafe_unretained。类似于:
extern const struct ClientInfoAttributes {
__unsafe_unretained NSString *accountNumber;
...
} ClientInfoAttributes;无论如何,要小心,从现在开始,您必须负责此类对象的内存管理。
https://stackoverflow.com/questions/18369665
复制相似问题