-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

次に、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 開発に関する本を入手する必要があります。

于 2012-10-23T15:39:44.623 に答える
1

Inheritance について何か読む必要があるかもしれません。

于 2012-10-23T15:12:19.847 に答える
1

次のように、最初に のインスタンスを作成する必要がありますHomeView

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

次に、次のように、好きな場所からこのメソッドを呼び出すことができます。

[view customSum];

のインスタンスを作成せずにこのメソッドを呼び出したい場合は、次のように を に変更してHomeView、インスタンス メソッドではなくクラス メソッドにすることができます。-+

+(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オーバーライドすることもできます。HomeView-customSum

于 2012-10-23T15:14:44.590 に答える