【问题标题】:Calling one class file from another从另一个类文件中调用一个类文件
【发布时间】:2010-01-20 19:35:33
【问题描述】:
我是 iPhone 开发环境的新手,所以要温柔:
目前正在编写一个 iPhone 游戏应用程序,该应用程序也将具有高分视图。想要制作这个视图,以便它独立,我可以从另一个类(.m 文件)调用它
问题是,如何调用另一个类文件?我知道我需要包含该文件的标头,但是如何从该类中调用“函数/消息”...类似于更新高分?
我希望这可以发送。提前感谢您提供的所有帮助。
地理...
【问题讨论】:
标签:
iphone
objective-c
xcode
【解决方案2】:
如果你的函数是静态的,这样调用它:
[ClassName theFunction:parameter];
如果您的函数是该类的成员,则创建该类的一个实例并像这样调用该函数:
ClassName obj = [[ClassName alloc] init];
[obj theFunction:parameter];
【解决方案3】:
不要认为它是调用函数/方法/过程/任何东西。将其视为一个对象与另一个对象交谈。他们需要做什么?您需要对要与之交谈的对象的引用。
通常,您需要创建一个实例变量来分配给您感兴趣的对象。如果两个对象都在一个 nib 中,您可以在 Interface Builder 中绘制它们之间的连接。否则,您需要构建代码以便它们能够找到彼此(例如,为 nib 的所有者提供对需要与视图对话的任何其他对象的引用)。
您可能想尝试学习其中的许多教程(例如,在 Apple 的开发者网站上),以了解其工作原理。
【解决方案4】:
对此的首选技术是委托。这样您的主视图就会将评分任务委托给您的 HighScore 视图。
@protocol myDelegate;
@interface myClass : UIView {
id <myDelegate> delegate;
}
@property (nonatomic, assign) id <myDelegate> delegate;
@end
@protocol myDelegate
- (void)myMethod //Method to be implemented by your High Score View
要在您的高分视图中实施此协议,请执行以下操作:
@interface HighScore : UIview <myDelegate>
在你的 HighScore.m 中实现方法 mymethod:
- (void)myMethod {
//update Score etc...
}
要从您的其他视图调用该方法,请执行以下操作:
myHighScoreView.delegate = self // self is your other view
[delegate myMethod] // calls the method in the other view.
我希望这很清楚。
-奥斯卡