-1

我将文件中的 一个UISegmentedControl对象连接到. 然后我把这个方法放在:.xibIBOutle UISegmentedControl ivarViewController.hViewController.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吗?还是我完全误解了保留周期是什么?

4

1 回答 1

1

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

不过,有一个风格问题。您似乎有一个方法,它不是与 ivar 同名的 getter switchMapTypes,。您不应该对两个这样不同的事物使用相同的名称。此外,您的 ivar 名称应该是一个名词,而方法(它是一个动作)是一个动词。我会建议mapTypesSwitchivar 和changeMapType行动。

于 2012-08-13T01:24:04.400 回答