是否可以从实例化类中调用方法?

时间:2011-02-28 17:59:14

标签: objective-c ios methods owner


我有一个派生自UITableViewController的类,并处理与特定类型的表相关的所有内容。我们称之为Class T

在主应用程序类Class A中,我有一些方法可以填充屏幕的其他区域,例如地图。

当我在Class T内填充我的表格时,我想调用Class A方法来绘制地图上的x,y点。

这可能吗?这样做的正确方法是什么?

当我考虑这种方法时,我期望在[super ...]内调用Class T会调用Class A方法,因为这是实例的所有者类,但是当然它调用了父类,在我的例子中是UITableViewController

谢谢你,
佩德罗

2 个答案:

答案 0 :(得分:1)

如果A是您的主要应用程序类,您应该能够使用[UIApplication sharedApplication]访问应用程序实例,将其强制转换为类A类型,并调用所需的API调用

答案 1 :(得分:1)

为什么不定义ClassAProtocol,然后在Class T中添加属性“classADelegate”? ClassAProtocol将定义一个方法,如:


-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;

因此,在Class T界面中,您将添加:


@property (assign) id classADelegate;

然后当你实例化时,让我们说实例A(A类的实例),instanceT(T类的实例),你会这样做:


instanceT.classADelegate = instanceA;

最后在Class T中你可以用这种方式调用绘图方法:


[classADelegate plotXYOnMapFromData:myDataToPlot];

在这种情况下委托模式的优点是T类只需要知道一小部分ClassA,即协议,并且由于协议的实现,ClassA能够与T通信。