たとえば、次の方法があります。
-(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
次に、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 開発に関する本を入手する必要があります。
Inheritance について何か読む必要があるかもしれません。
次のように、最初に のインスタンスを作成する必要がありますHomeView
。
HomeView *view = [[HomeView alloc]init];
次に、次のように、好きな場所からこのメソッドを呼び出すことができます。
[view customSum];
のインスタンスを作成せずにこのメソッドを呼び出したい場合は、次のように を に変更してHomeView
、インスタンス メソッドではなくクラス メソッドにすることができます。-
+
+(void)customSum {
NSLog(@"show something");
}
これで、次のようにどこからでも呼び出すことができます。
[HomeView customSum];
ただし、次のように、ファイルでこのメソッドを宣言し、このメソッドHomeView.h
を呼び出すファイルにそのヘッダー ファイルをインポートしたことを確認してください。
#import "HomeView.h"
Objective-C プログラミング言語の詳細については、Apple ドキュメントを読むことをお勧めします。
ArticleView
から派生すると仮定すると、 内からHomeView
簡単に呼び出すことができます。[self customSum]
ArticleView
内では、必要に応じて の実装をArticleView
オーバーライドすることもできます。HomeView
-customSum