-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と同じ名前のゲッターではないメソッドがあるようswitchMapTypesです。このような2つの異なるものに同じ名前を使用しないでください。また、ivar名は実際には名詞であり、メソッド(アクション)は動詞である必要があります。私はmapTypesSwitchivarとchangeMapTypeアクションのために提案します。

于 2012-08-13T01:24:04.400 に答える