我是objective-c的新手,所以请多多包涵。
我会为这件衣服穿上衣服——如果你不介意的话。
实现您想要的一种方法是通过“组合”,这意味着编写 A 使其具有作为 B 实例的成员变量。然后 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
.
乙:
#import <Cocoa/Cocoa.h>
@interface B : NSObject {
}
- (void)do_stuff;
- (void)methodB;
@end
.
体重:
#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
乙:
#import <Cocoa/Cocoa.h>
@interface B : NSObject {
}
+ (void)classMethodB;
- (void)do_stuff;
@end
体重:
#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