【发布时间】:2011-07-18 20:15:18
【问题描述】:
还有其他人在使用 XCode 4.2(lion) 或 4.0.2 中的 4.3 iPhone 模拟器时遇到问题吗?
我的代码长期以来一直在工作、测试和生产中使用块来指定完成操作。例如,我使用 UIView animate 来淡出标签顶部的一些文本,如下所示:
[UIView animateWithDuration: 0.0
delay: 0.0
options: (UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionTransitionNone)
animations: ^{
videoTextLabel1.alpha = 0.0;
videoTextLabel2.alpha = 0.0;
videoTextLabel3.alpha = 0.0;
}
completion: ^(BOOL completed) {
[self fadeInNextMeditationLine: 0];
}];
我在模拟器中可靠地获得了 EXEC_BAD_ACCESS -- 在设备上从来没有问题。
在另一个地方,我使用自己的完成块实现在用户关闭模式视图后采取行动。
ValuePickerController *controller =
[[ValuePickerController alloc]
initWithNibName: kValuePickerXIBFileName
bundle: nil
labelText: @"prompt")
value: alertSettings.frequency
minimumValue: kMinimumFrequency
maximumValue: kMaximumFrequency
completionBlock: ^(NSInteger newValue) {
[self updateFrequencyText: newValue];
[self changeFrequencySetting];
}];
没有 NSZombies 出现,分析器运行干净。此外,此代码已投入生产 6 个月,没有崩溃。
还有其他人遇到这个问题吗?自从我升级 XCode 后就一直在发生这种情况。
【问题讨论】:
-
更新——我在另一个代码领域发现了这个问题,共同点似乎是我使用块来指定以后会发生什么。我创建了一个类似的函数,它在模式视图中请求一个值,然后在选择值后执行 2 个方法:
-
我有同样的问题,没有解决办法。糟透了。
标签: objective-c ios xcode ios-simulator objective-c-blocks