这会导致保留周期吗?

时间:2012-08-13 01:16:48

标签: objective-c ios

我将UISegmentedControl文件中的.xib对象与IBOutle UISegmentedControl中相应的ivar ViewController.h相关联。然后我将此方法放在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];
}

如果我将此方法链接回UISegmentedControl文件中的.xib对象,是否会导致保留周期?或者我完全误解了保留周期是什么?

1 个答案:

答案 0 :(得分:1)

当一个对象拥有另一个拥有第一个对象的对象时,就会发生一个保留周期。您的分段控件不会声明视图控制器的所有权 - 连接IBAction没有所有权后果 - 所以这里没有循环。

但是有一个风格问题。您似乎有一个方法不是与ivar switchMapTypes同名的getter。你不应该为两个不同的东西使用相同的名称。此外,您的ivar名称应该是名词,方法(这是一个动作)是一个动词。我建议将mapTypesSwitch用于ivar,changeMapType用于操作。

相关问题