首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MoGenerator会与ARC发生冲突?

为什么MoGenerator会与ARC发生冲突?
EN

Stack Overflow用户
提问于 2013-08-22 00:10:29
回答 2查看 1.1K关注 0票数 2

我的MoGen命令行(构建阶段)是

代码语言:javascript
复制
mogenerator -m PT1/Data/DataModel.xcdatamodeld -O PT1/Data -–template-var arc=true

这应该适用于ARC。然而,在机器类中,我得到了如下内容

代码语言:javascript
复制
extern const struct ClientInfoAttributes {
    NSString *accountNumber;
    ...
} ClientInfoAttributes;

这就产生了"ARC禁止结构中的objects对象“的错误。想必我在这里犯了什么错误。有人能指出我的问题吗?

我正在使用iOS7和XCode 5测试版,但这似乎与此无关。不过,这可能是相关的。

-Bob

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-23 03:20:56

我在用正确的选项来为ARC做发动机。它是--模板-var arc=true,正如您在前面我的问题中所看到的。但是,我从这个博客条目raptureinvenice.com/getting-started-with-mogenerator.复制了命令行。在这篇文章中,网络软件将作者的“.”改为长跑或m-破折号.当我复制和粘贴时,我得到了一个看起来正确但却不是的破折号。mogen软件目前没有将此标记为错误。它只是默默地忽略了它。

当我最后重新输入-从零开始,它正确地工作了。使用__unsafe_unretained防止编译器错误。

博客作者已经修复了博客条目,我已经向mogen项目提出了一个问题,以便在将来报告这种类型的错误。

票数 5
EN

Stack Overflow用户

发布于 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。类似于:

代码语言:javascript
复制
extern const struct ClientInfoAttributes {
    __unsafe_unretained NSString *accountNumber;
    ...
} ClientInfoAttributes;

无论如何,要小心,从现在开始,您必须负责此类对象的内存管理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18369665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档