【问题标题】:Problems with ARC on xcode 5 and mavericks [duplicate]xcode 5和mavericks上的ARC问题[重复]
【发布时间】:2013-12-24 12:55:20
【问题描述】:

这就是问题所在,当我尝试构建我的 xcproject xcode 时,在以下代码的第 3 行显示错误:

typedef struct 
{
    NSArray *array;
    NSString *string;
}WYnot;

错误是:“ARC forbids Objective-C objects in struct”。

我该如何解决这个问题???是不是真的出错了?

【问题讨论】:

标签: objective-c c xcode cocoa automatic-ref-counting


【解决方案1】:

我有类似的问题,我通过添加__unsafe_unretained 关键字对其进行排序:

typedef struct 
{
    __unsafe_unretained NSArray *array;
    __unsafe_unretained NSString *string;
}WYnot;

试试应该会有帮助。

【讨论】:

  • 是的,这是对“可能重复”的一种回答(参见上面@gtgaxiola 的评论)。
【解决方案2】:
typedef struct
{
    CFArrayRef array;
    CFStringRef string;
}WYnot;

这行得通。我假设您有一些误解,即 struct 是 C 的一部分而不是 ObjectiveC 的一部分。

【讨论】:

  • CFArrayRefNSArray * 与 ARC 不同。所以这并不能回答问题。
  • 好的。同意。正确的答案是:创建 C 结构时仅使用 C 结构。
  • 所以我不能用 NSArray 创建一个结构体?
  • 是的。一目了然,您可以将 CFArrays 转换为 NSArrays,但编译器的内容并不相同。
猜你喜欢
  • 1970-01-01
  • 2012-03-05
  • 2014-04-20
  • 2014-02-24
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
相关资源
最近更新 更多