1

我设计代码的方式是使用多个交互的视图控制器,我需要在视图控制器之间传递数据。我这样做的方式是“传递一个引用”,创建一个指向目标视图控制器的指针,作为方法参数,如下所示:

-(void)aMethodToSetUpInterfaceElements:(UIViewController*)targetCV

这有什么问题吗,还是我需要注意?它在功能层面上运行良好,但设计呢?

4

2 回答 2

2

这并没有什么错。

如果它对你有用,那就没关系。只需确保weak引用视图控制器,否则您可能会在保留周期中出现内存泄漏。阅读此内容以获取更多信息: http: //www.cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html

说到设计,这真的取决于每种情况。我不能准确地说,因为您没有提供有关您要实现的功能的更多信息。

也许如果您想让您的代码更通用,以便在其他地方或项目中使用,您可能会考虑对您的视图控制器执行委托,但这取决于您的视图层次结构及其设计。要查看有关在视图控制器之间传递数据的更多信息,请参阅:在视图控制器之间传递数据

于 2013-08-05T03:46:41.320 回答
0

如果您没有足够的理由,我认为传递视图控制器以传输其数据并不是一个好主意。我倾向于将最少的知识暴露给另一个对象。

例如,假设您有两个视图控制器controllerAcontrollerB.

  • 如果您只需要从controllerAto传递一些数据controllerB,则传递数据,可能是 a NSData、 a NSArray、 aNSDictionary或您的自定义数据结构。您不应将整体controllerA作为参数传递给controllerB. 虽然你可以使用controllerA.datagetter来访问数据,但是你暴露了太多关于controllerAto的知识controllerB,这可能会因为增加和之间的耦合controllerA而在不知不觉中破坏你的设计controllerB
  • 如果您的目标是处理视图转换,那么将视图控制器作为参数传递可能是一个很好的理由。这样您就可以充分利用它-presentViewController:animated:completion:来呈现模态视图,或者将其推送到导航控制器中,或者您可能想要获取对其view属性的引用并自定义您自己的 UI 呈现。
于 2013-08-05T06:05:39.780 回答