-1
我将.xib
文件中的UISegmentedControl
对象连接到ViewController.h
中对应的IBOutle UISegmentedControl
ivar
。然后,我把在ViewController.m
这个方法:这是否会导致保留周期?
-(IBAction)switchMapTypes {
if (switchMapTypes.selectedSegmentIndex == 0)
[worldView setMapType: MKMapTypeStandard];
else if (switchMapTypes.selectedSegmentIndex == 1)
[worldView setMapType: MKMapTypeSatellite];
else if (switchMapTypes.selectedSegmentIndex == 2)
[worldView setMapType: MKMapTypeHybrid];
}
这将导致保留周期,如果我在.xib
文件链接这个方法返回UISegmentedControl
对象?或者我完全误解保留周期是什么?
你完全误解了它。有两个主要原因(恕我直言)有循环:你实例化一个像NSTimer,反过来保留你。如果您在准备发布时忘记清除它,那么您将无法发布(保留周期)。同样,如果某个对象将您的类作为委托,但保留了您(某些苹果类会这样做)。第三种不常用的方法是声明一个块并将其作为对象存储,但它保留了“自我”。当然还有其他方法。请注意,使用NIB时,只有“顶级对象”需要“强大”才能“弱”。 – 2012-08-13 01:22:59