我将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
对象,是否会导致保留周期?或者我完全误解了保留周期是什么?
答案 0 :(得分:1)
当一个对象拥有另一个拥有第一个对象的对象时,就会发生一个保留周期。您的分段控件不会声明视图控制器的所有权 - 连接IBAction
没有所有权后果 - 所以这里没有循环。
但是有一个风格问题。您似乎有一个方法不是与ivar switchMapTypes
同名的getter。你不应该为两个不同的东西使用相同的名称。此外,您的ivar名称应该是名词,方法(这是一个动作)是一个动词。我建议将mapTypesSwitch
用于ivar,changeMapType
用于操作。