[英]How do I share common methods between view controllers in Objective-C?
在我的应用程序中有许多视图控制器,它们有自己的用途。 但是,在它们下面确实需要共同的维护工作,这些工作可以使用相同的方法代码,而不是每个都有自己的代码副本,字面上粘贴。
有没有办法分享这些常用方法的代码? 我看到两种可能性:
1)在方法的特殊维护对象中,在内存中真正共享的一个代码副本
要么
2)在代码块中写入一次,但每个视图根据需要分配多次。
以下哪一条是正确的路径或正确的路径,以及如何以最简单的方式实施?
善良,在房间里的新编码器。
谢谢。
-Ric
注意:这是一个反映当时Apple实践的旧问题/答案,并回答了一个新的编码人员正在寻找他们能够理解的简单解决方案(根据问题的要求)。 使用合成 ,有更好,更可测试的方法来实现这一目标。
实现所需目标的最佳方法是为视图控制器创建公共父类。 因此,不是直接从UIViewController
继承,而是每个自定义类都将继承自SomeFeatureViewController
( SomeFeature
描述所提供的常用功能),此类继承自UIViewController
。 现在,每个实际的视图控制器都将继承自SomeFeatureViewController
并且任何常用方法(也可以是这些方法使用的任何常见实例变量)都可以放在此父类中。
@interface SomeFeatureViewController : UIViewController
{
int common_iVars;
}
- (void)commonMethods;
@end
@interface ActualViewController : SomeFeatureViewController
{
int specific_iVars;
}
- (void)specificMethods;
@end
好吧,我最终做的是创建一个Singleton对象并将所有常用方法放在那里。 这意味着我的所有View控制器都可以使用Singleton的常用方法。 如果项目是由程序员团队开发的话,这可能有点过于开放,但正如我所知,所有控制器在处理方面都有类似的要求。 所以Singleton方法似乎有效。
它也适合项目,因为在问题发生时所有的View控制器都已创建并使它们成为父类的子类似乎是一种改进,尽管我同意如果是初始设计的一部分,它可能是一个更好的方法。 我真的感谢有时间回答的3。
我看到它的方式你应该用所有常用方法做一个类,然后继承它。 假设你有MyCommonViewController:UIViewController然后为每个不同的视图控制器做MySpecificVIewController:MyCommonViewController
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.