Ios 是否有更好的方法从托管视图控制器调用托管视图控制器中的方法?
到目前为止,在我开发的应用程序中,我一直有一个Ios 是否有更好的方法从托管视图控制器调用托管视图控制器中的方法?,ios,objective-c,cocoa-touch,uiviewcontroller,Ios,Objective C,Cocoa Touch,Uiviewcontroller,到目前为止,在我开发的应用程序中,我一直有一个UIViewController负责显示其他UIViewControllers以在UI中显示转换。每当我在“管理”视图控制器中调用“管理”视图控制器中的方法时,我必须确保在管理控制器中有对管理控制器的引用 例如: 如果我有一个名为MainController的UIViewController,负责管理我的应用程序UI中的其他UIViewController,并且MainController为演示创建2个控制器。分别调用了subcroller1和sub
UIViewController
负责显示其他UIViewController
s以在UI中显示转换。每当我在“管理”视图控制器中调用“管理”视图控制器中的方法时,我必须确保在管理控制器中有对管理控制器的引用
例如:
如果我有一个名为MainController
的UIViewController
,负责管理我的应用程序UI中的其他UIViewController
,并且MainController
为演示创建2个控制器。分别调用了subcroller1
和subcroller2
。如果subcroller1
完成并且MainController
需要显示subcroller2
,我总是在subcroller1
内部设置一个maincontroller2
参考变量,以便它可以将更改传达给MainController
。这意味着每当MainController
创建subcroller1
时,必须将subcroller1
的MainController
参考变量设置为self
我应该担心这种通信方式的内存使用情况吗?对这种行为使用通知会更好吗?我发现我现在使用的方法的主要好处是,如果必要的话,在视图控制器之间共享信息非常容易。任何想法都是值得赞赏的。在其他视图中处理更改、操作或用户交互是的基本用例。最佳做法是让主控制器成为第一/第二视图控制器的代理,然后当子控制器中发生事件时,它们对其代理调用某些方法,然后代理可以采取任何必要的操作 按照您描述的方式传递引用不会对内存产生明显的影响,但是它会将您的代码紧密地耦合到
MainController
,这是应该避免的。您应该争取灵活性,以处理未来可能发生的变化。如果你过渡到一个通用的应用程序,而iPad用户界面的结构却大不相同,会发生什么?对于委托,您只需要确保控制器之间的契约完好无损,但可以自由更改任何底层实现细节
在视图之间保持值/状态同步的其他选项包括:
- -最好用于数据
- -最好用于数据
s发送-最适合用于操作NSNotification