【问题标题】:Issue when converting a Xcode project to ARC将 Xcode 项目转换为 ARC 时出现问题
【发布时间】:2012-06-06 00:08:35
【问题描述】:

我收到以下警告:“将保留的对象分配给不安全的属性;分配后对象将被释放”用于以下代码的 sn-p。有人可以帮我解决这个问题吗?我设置 detailViewController.restaurantsSortedByDistance 的第二行是警告突出显示的部分.....

**   RestaurantList.h **
    @property (nonatomic) NSMutableArray *restaurantsSortedByDistance;

**         end        **

 RestaurantList *detailViewController = [[RestaurantList alloc] initWithNibName:@"RestaurantList" bundle:nil];

        detailViewController.restaurantsSortedByDistance = [[NSMutableArray alloc] initWithArray:[self returnRestaurantsSortedByDistance:rows]];

【问题讨论】:

  • 你是如何声明餐馆SortedByDistance的?您很可能希望它成为(保留)属性,但实际上它是(分配)属性。
  • 我也遇到过这个问题。转换工具正在做正确的事情。这是错误的编译器警告。 ARC下的默认值实际上是“strong”,而不是“assign”。 (assign 是手动引用计数模式下的默认值)。如果您不理会您的代码,您会发现它实际上可以正常工作。

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


【解决方案1】:

在您的 detailViewController.h 上,将您的 restaurantsSortedByDistance 属性设置为 strong。

【讨论】:

  • 是的,消除了警告。我有两个问题。 1)为什么Xcode不自动为我添加“强”,如果这是它正在寻找的防止警告的原因。 2)什么是强?它说明了什么?非常感谢。
  • 视图控制器中的属性由您根据需要设置。强 = 对象将保持对元素的引用,只要第一个存在,第二个就会,弱 = 对象保持引用但不能保持元素活着,只要它存在,它就会指向它但不在它没有之后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多