私はobjective-cが初めてなので、ご容赦ください。
よろしければ、この服を着たままにします。
必要なものを実現する 1 つの方法は、「構成」を使用することです。これは、B のインスタンスであるメンバー変数を持つように A を記述することを意味します。その後、A は B のそのインスタンスを使用して B のメソッドを呼び出すことができます。
あ:
#import <Cocoa/Cocoa.h>
#import "B.h"
@interface A : NSObject {
B* my_b;
}
- (id)init:(B*)b;
- (void)methodA;
@end
.
午前:
#import "A.h"
@implementation A
- (id)init:(B*)b
{
if (![super init])
{
return nil;
}
my_b = b;
return self;
}
- (void)methodA
{
[my_b methodB];
}
@end
.
Bh:
#import <Cocoa/Cocoa.h>
@interface B : NSObject {
}
- (void)do_stuff;
- (void)methodB;
@end
.
Bm:
#import "B.h"
#import "A.h"
@implementation B
- (void)do_stuff
{
A* a = [[A alloc] init:self];
[a methodA];
}
- (void)methodB
{
NSLog(@"hello");
}
@end
===
あなたが書いたので:
[classB methodB];
...B でクラス メソッドを呼び出したいと思うかもしれません。
あ:
#import <Cocoa/Cocoa.h>
#import "B.h"
@interface A : NSObject {
}
- (void)methodA;
@end
午前:
#import "A.h"
#import "B.h"
@implementation A
- (void)methodA
{
[B classMethodB];
}
@end
Bh:
#import <Cocoa/Cocoa.h>
@interface B : NSObject {
}
+ (void)classMethodB;
- (void)do_stuff;
@end
Bm:
#import "B.h"
#import "A.h"
@implementation B
- (void)do_stuff
{
A* a = [[A alloc] init];
[a methodA];
}
+ (void)classMethodB //Note the '+'
{
NSLog(@"hello");
}
@end