我对如何跨文件访问变量感到很困惑。
例如:
我有 3 个文件:Apple、Fruit 和 Eat
水果.h
@interface Fruit
{
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end
水果.m
@implementation Fruit
#import "Fruit.h"
{
@synthesize name;
-(id) init
{
self = [super init];
if (self) {
name = [[NSMutableArray alloc] init];
}
return self;
}
}
@end
苹果.h
@interface Apple
#import Fruit.h
{
Fruit *apple;
}
@property (nonatomic, retain) Fruit *apple;
@end
苹果.m
#import Apple.h
@implementation Apple
@synthesize apple;
apple = [[Fruit alloc] init];
apple.name = @"apple";
@end
//我的 Eat.h 实际上是空的,因为我认为我不需要它
吃.m
@implementation Eat
#import Apple.h
//why is this not working?
NSLog(@"I am eating %@", apple.name);
我从头开始写这些只是作为示例。因此,请忽略愚蠢的语法错误,例如缺少分号,以及我错过的明显内容。我只是在反映我正在努力解决的问题。
我想我的困惑是在 Apple.m 中,您可以使用句点符号 (.) 访问 Fruit 的名称 ivar。但在 Eat.m 中,我无法使用 (.) 访问苹果的名称 ivar。我知道我应该/可以编写一个 getter 方法,但是有没有办法以我尝试跨文件的方式直接访问变量?我知道它可能是糟糕的编程技术(如果它甚至可以完成的话),但我只是很困惑为什么功能不一样。