iphone - UIActivityIndi​​catorView nillify 使其崩溃

标签 iphone ios

对于下面的代码,如果我用“self”取消指标,如果不使用 self 而不是崩溃,它会崩溃。
这不是我应该始终使用“self”来访问由@property 创建和保留的ivars 的规则吗?

@property(nonatomic,retain) UIActivityIndicatorView* activityIndicator;


if(activityIndicator!=nil){
     [activityIndicator removeFromSuperview];
      //self.activityIndicator = nil;  //crashes!
              activityIndicator = nil;       //does not crash
 }

最佳答案

一般来说:

  self.activityIndicator = nil;  //crashes!

release activityIndi​​cator,所以这可能与崩溃有关。
 activityIndicator = nil;       //does not crash

不会释放事件指示器,你没有崩溃,你有内存泄漏。

在您的具体情况下,崩溃可能取决于您执行此操作时的事实:
 [activityIndicator removeFromSuperview];

事件指示器被释放;现在,如果保留计数也变为 0,则对象也将被释放,但不会更新属性以反射(reflect)对象已被释放的事实。因此,当您将其设置为 nil 时,setter 会尝试释放它,但对象不再存在,因此崩溃。

这是一个猜测。如果您在类里面正确保留了事件指示器,则不会发生这种情况。因此,您可以查看创建事件指示器的代码以及代码中使用 activityIndicator 的位置。或者你发布它以获得更多帮助......

关于iphone - UIActivityIndi​​catorView nillify 使其崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938610/

相关文章:

ios - 当以模态方式呈现 View 时,是否调用 viewDidDisappear

iphone - 管理以单一方式触发的多个本地通知的警报?

iphone - iphone如何连接无线鼠标?

ios - 无法在 View Controller 之间发送数据 Swift

ios - 使用PhoneGap在iPhone中单击按钮后退出应用程序

iphone - 如何创建具有多个 "sections"的 UIBarButtonItem ?

iphone - 如何使用 NSHTTPURLResponse 在 iPhone 上通过 HTTP 查询文件的最后修改日期?

ios - 使用 iOS8 SDK 在 iOS7 的 UICollectionViewCell 中调整 UIViews 的大小

ios - 如何滚动到第一个单元格,同时滑动 CollectionView 上的最后一个单元格?

ios - 将 UIImage 以二进制形式保存到 SQLite 并使用 imageWithData 检索它