1

クラスのインスタンスを別のクラスに渡す方法を学びましたが、逆の方法でそれを行う方法をまだ理解していません。

例:

rootViewControllerにいて、didSelectRowAtIndexPathで、プレイリストのインスタンスを次のようにsomeviewcontrollerに渡しているとします。

SomeViewController *someViewController = [[SomeViewController alloc] initWithNibName:nil bundle:nil];

playlist = [arr objectAtIndex:indexPath.row];
someViewController.playlist = playlist;

これで、クラスインスタンスを転送するために完全に機能しますが、代わりに、someViewControllerでImと言い、rootViewControllerプレイリストが必要です。

同様の手法を使用してこれを達成するにはどうすればよいですか?助けてくれてありがとう!

4

1 に答える 1

1

委任パターンを確認する必要があります:https ://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

AppleのCoreDataRecipesサンプルコードもチェックしてください:http: //developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Listings/ReadMe_txt.html

サンプルコードを見ると、RecipeListTableViewControllerがRecipeAddViewControllerのデリゲートであることがわかります。これにより、RecipeAddViewControllerが完了すると、RecipeListTableViewControllerがRecipeDetailViewControllerにレシピを表示できるようになります。

デリゲートは、デリゲートへの参照が弱いリンクであり、デリゲートを保持しないことを意味するため、オブジェクトグラフにも役立ちます。したがって、委任パターンを使用することで、保持サイクルを作成しないようにし、ARCがメモリ管理を処理します。

于 2012-04-20T16:59:47.987 に答える