如果两个类具有不同的类层次结构但需要共享一些代码,那么ObjectiveC中最好的方法是什么?在actionscript中,你可以这样做:
class A : B{
include "commoncode.as"
}
class C : D{
include "commoncode.as"
}
然后将公共代码放在commoncode.as
中编辑:以下是actionscript include语句的作用: “在编译时,编译器会将文件的全部内容复制到您的类中,就像您实际输入它一样。”
答案 0 :(得分:0)
在AS3中,您可以使用“interface”使Class符合某组方法。在Objective-C中,您拥有基本上实现相同目标的“协议”。但是,这只允许您定义所需(或可选)方法,而不是实现它们。类本身仍然会实现。
如果你有一个只有helper方法的类(叫做CommonCode),你可以在需要使用这些方法的类中包含头文件。例如,MathUtils类可能如下所示:
的 MathUtils.h 强> 的
CGFloat distance(CGPoint point1,CGPoint point2);
的 MathUtils.m 强> 的
CGFloat distance(CGPoint point1,CGPoint point2) {
CGFloat dx = point2.x - point1.x;
CGFloat dy = point2.y - point1.y;
return sqrt(dx*dx + dy*dy );
};
当包含在类中时,您可以调用此方法,如:
CGFloat dist = distance(myPoint1, myPoint2);
我应该注意这些是C风格的功能,而不是Objective-C。但是,您可以使用类方法而不是实例方法轻松地使MathUtils类静态化。