例如,我有这种方法:
-(void)customSum {
NSLog(@"show something");
}
在 HomeView.m 中,我想在所有其他文件中调用该方法,例如在 ArticleView.m 中。我可以做类似的事情:
[HomeView customSum];
或类似的东西?我怎样才能做到这一点?
这听起来不像是试图继承任何东西(这就是人们提到继承的原因)。如果是,请查看其他答案。
执行此操作的 obj-c 方法如下:您希望 HomeView.h 为 HomeView 类声明一个接口,并让该方法是类方法或实例方法。像这样:
@interface HomeView : UIView
- (void)anInstanceMethod;
+ (void)aClassMethod;
@end
我假设因为这些是您从 UIView 派生的“视图”。然后你会让 HomeView.m 实现该方法:
@implementation HomeView
- (void)anInstanceMethod
{
// Do Something
}
+ (void)aClassMethod
{
// Do Something else
}
@end
然后,在 ArtclViewe.m 中(您在 ArticleView.h 中声明了类 ArticleView 的实现(这是执行此操作的标准方法,尽管您可以将接口放入 .m 文件中,但您不希望'不要包含 .m 文件,因此该类在文件外不可见)。
#include "HomeView.h"
...
[HomeView aClassMethod]; // Call the class method on the class
HomeView *homeView = [HomeView new];
[homeView anInstanceMethod]; // Call the instance method on an instance
...
如果这对您来说是全新的,您可能应该得到一本关于 Objective-C 和 iOS 开发的书。
也许您应该阅读有关 Inheritance的内容。
您首先必须创建一个实例HomeView
,如下所示:
HomeView *view = [[HomeView alloc]init];
然后,您可以从任何您喜欢的地方调用此方法,如下所示:
[view customSum];
如果您想调用此方法而无需创建 的实例,您可以通过将 更改为 aHomeView
使其成为类方法而不是实例方法,如下所示:-
+
+(void)customSum {
NSLog(@"show something");
}
现在,您可以从任何地方调用它,如下所示:
[HomeView customSum];
但是,请确保您已在HomeView.h
文件中声明了此方法,并且已将该头文件导入到要从中调用此方法的文件中,如下所示:
#import "HomeView.h"
有关 Objective-C 编程语言的更多信息,我建议您阅读Apple 文档。
假设ArticleView
派生自HomeView
,您可以简单地[self customSum]
从内部调用ArticleView
。
在ArticleView
中,您还可以覆盖if 需要的实现HomeView
。-customSum