Objective c 可以从实例化类调用方法吗?

Objective c 可以从实例化类调用方法吗?,objective-c,ios,methods,owner,Objective C,Ios,Methods,Owner,我有一个从UITableViewController派生的类,它处理与特定类型表相关的所有内容。我们称之为T类 在5月份的主要应用程序类中,类A,我有一些方法来填充屏幕的其他区域,例如地图 当我在Class T中填充表格时,我想调用Class A方法,在地图上绘制x,y点 这可能吗?正确的方法应该是什么 当我考虑这种方法时,我希望在类T中调用[super…]将调用类A方法,因为这是实例的所有者类,但它当然会调用父类,在我的例子中是UITableViewController 谢谢你, Pedro如


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

在5月份的主要应用程序类中,
类A
,我有一些方法来填充屏幕的其他区域,例如地图

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

这可能吗?正确的方法应该是什么

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

谢谢你,

Pedro

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

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


-(void)plotXYOnMapFromData:(id)someObjectContainingDataToPlot;
因此,在T类接口中,您将添加:


@property (assign) id classADelegate;
然后,当您实例化时,比如从instanceA(类A的实例),instanceT(类T的实例),您将执行以下操作:


instanceT.classADelegate = instanceA;
最后,在类T中,可以通过以下方式调用plotting方法:


[classADelegate plotXYOnMapFromData:myDataToPlot];

在本例中,委托模式的优点是,类T只需要知道ClassA的一小部分,即协议,并且ClassA能够与T通信,这要归功于它实现了协议。

它是iOS(可能是Objective-C)…对不起,我帮不了你。从给定的代码片段中,它肯定是Objective-C。现在已标记。谢谢,我将尝试这种简单的方法。instanceT.classADelegate=instanceA如何解析为instanceA?i、 在类T中如何知道是谁实例化了这个类?也许我可以重写类T的init方法?并将所有者作为参数接收…我可以重写类T的initWithStyle,因为它继承自类UITableViewController,并将所有者作为参数传递。。。问题是T类是由IB创建的,因此无法调用传递所有者…如果在T类中将classADelegate属性定义为IBOutlet,您将在IB中看到它,并且能够连接到委托。如果这是不可能的,您最终可以使用类A的awakeFromNib方法将其设置为classT的委托,前提是这两个方法是从同一个Nib加载的。如果这两个实例是从不同的nib加载的,那么通常您将从第一个视图控制器上的initWithNib:bundle:调用加载第二个nib,然后在此调用之后,您将能够设置委托。viggio24,这看起来是一个聪明的方法!我看到的问题是,为了创建IBOutlet,我不知道classT中classA的类型(如果我在classT.h中包含classA.h,我会得到很多错误,正如预期的那样)。我可以说classAdelegate是NSObject类型吗?