如何设置“无效”公开?

时间:2012-10-23 15:09:29

标签: ios xcode

我有这样的方法:

-(void)customSum {
NSLog(@"show something");
}
HomeView.m中的

我希望在所有其他文件中调用该方法,例如在ArticleView.m中。我可以这样做:

[HomeView customSum];

或类似的东西?我怎么能这样做?

4 个答案:

答案 0 :(得分: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

然后,在ArticlViewe.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开发的书。

答案 1 :(得分:1)

也许你应该阅读something about Inheritance

答案 2 :(得分:1)

首先必须创建HomeView的实例,如下所示:

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

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

[view customSum];

如果要在不必创建HomeView实例的情况下调用此方法,可以将-更改为+,使其成为类方法而不是实例方法,像这样:

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

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

[HomeView customSum];

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

#import "HomeView.h"

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

答案 3 :(得分:0)

假设ArticleView来自HomeView,您只需在[self customSum]内拨打ArticleView

ArticleView内,如果需要,您还可以覆盖HomeView -customSum的实施。