【问题标题】:On Xcode4.2 memory management, clarification needed关于 Xcode4.2 内存管理,需要澄清
【发布时间】:2011-10-19 01:28:52
【问题描述】:

假设创建了一个启用了 ARC 的新项目

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

以及下面的声明

@property (nonatomic) NSString *classDescription;

为什么会

@synthesize classDescription;

出错了

"Existing ivar 'classDescription' for unsafe_unretained propery 'classDescription must be _unsafe_unretained"

我认为 Xcode 4.2 版不需要保留,需要发布。这不正确吗?

请澄清

【问题讨论】:

  • ARC 是否会使 NSString 属性上的 copy 修饰符过时?

标签: objective-c memory-management xcode4.2


【解决方案1】:

您需要将其设为 strong 属性,以便 ARC 知道它应该保留该对象。

【讨论】:

  • 这解决了这个问题,但是我想知道这是否在某些在线指南中被引用?请链接
【解决方案2】:

如果您使用自动引用计数,则不需要保留/释放。这是现有项目还是新项目?新项目应默认启用 ARC。

【讨论】:

  • 这是一个新项目。启用 ARC。这就是为什么我发现看到这个错误很奇怪
【解决方案3】:

如果您的项目是在 Xcode 4.2 之前创建的,那么您可以通过转到构建设置、搜索 Objective-C++ 自动引用计数并勾选框来启用它。

【讨论】:

  • 这是一个启用了 ARC 的全新项目
猜你喜欢
  • 2011-06-27
  • 2023-01-04
  • 2016-07-14
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
相关资源
最近更新 更多