-1

例如,我有这种方法:

-(void)customSum {
NSLog(@"show something");
}

在 HomeView.m 中,我想在所有其他文件中调用该方法,例如在 ArticleView.m 中。我可以做类似的事情:

[HomeView customSum];

或类似的东西?我怎样才能做到这一点?

4

4 回答 4

3

这听起来不像是试图继承任何东西(这就是人们提到继承的原因)。如果是,请查看其他答案。

执行此操作的 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 开发的书。

于 2012-10-23T15:39:44.623 回答
1

也许您应该阅读有关 Inheritance的内容。

于 2012-10-23T15:12:19.847 回答
1

您首先必须创建一个实例HomeView,如下所示:

HomeView *view = [[HomeView alloc]init];

然后,您可以从任何您喜欢的地方调用此方法,如下所示:

[view customSum];

如果您想调用此方法而无需创建 的实例,您可以通过将 更改为 aHomeView使其成为类方法而不是实例方法,如下所示:-+

+(void)customSum {
    NSLog(@"show something");
}

现在,您可以从任何地方调用它,如下所示:

[HomeView customSum];

但是,请确保您已在HomeView.h文件中声明了此方法,并且已将该头文件导入到要从中调用此方法的文件中,如下所示:

#import "HomeView.h"

有关 Objective-C 编程语言的更多信息,我建议您阅读Apple 文档

于 2012-10-23T15:43:02.443 回答
0

假设ArticleView派生自HomeView,您可以简单地[self customSum]从内部调用ArticleView

ArticleView中,您还可以覆盖if 需要的实现HomeView-customSum

于 2012-10-23T15:14:44.590 回答