1

我已经学会了如何将一个类的实例传递给另一个类,但我还没有理解如何反过来做。

例子:

假设我们在 rootViewController 中,并且在 didSelectRowAtIndexPath 中,我们将播放列表的实例传递给 someviewcontroller,如下所示:

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

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

现在这非常适合向前传递类实例,但我们可以说 Im 在 someViewController 中并想要 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 回答