我有这个名为 mySegmented 的属性,声明如下
.h
@property (retain) UISegmentedControl *mySegmented;
.m
@synthesize mySegmented = _mySegmented;
然后,它是这样创建的:
self.mySegmented = [self createSegmented];
// createSegmented creates an autoreleased segmented control
我的应用程序有 3 个不同的分段控件。在给定的时间只出现一个。在我的应用程序的某个时刻,我必须隐藏一个特定的分段控件,所以,我要做的是构建所有分段控件的数组并迭代......这是在一个块内。
[UIView animateWithDuration:0.8
animations:^{
NSArray *list = [NSArray arrayWithObjects:
self.mySegmented1,
self.mySegmented2,
self.mySegmented3,
nil];
for (UISegmentedControl *oneSeg in list) {
[oneSeg setAlpha:0.0f];
}
}];
发生的情况是:一段时间后,应用程序在尝试构建此数组时崩溃。我想其中一个分段控件以某种方式被解除分配。我可以在代码中看到没有释放。
我的问题是:这个正在创建的数组是自动释放的。当块完成动画时会发生什么?是否向阵列的每个成员发送了一个版本?
如果我在创建后保留分段控件,Xcode 会抱怨它会泄漏。
任何线索?
谢谢。