我正在转发我前一天发布的这个问题。当我在遗漏一些关键信息之前我描述了这个问题,这些信息导致人们试图提供解决方案。希望这是更好的解释。
我在Objective-C中有一个情况,我试图通过另一个对象访问一个对象的变量。课程(简化):
@interface A : NSObject {
NSMutableArray *someStuff;
}
@property (nonatomic, retain) NSMutableArray *someStuff;
@end
@implementation A
@synthesize someStuff;
// blah, blah, blah
然后,因为我正在做一个iPhone应用程序,所以有一个app委托包含这个对象类型的变量:
@interface AppDelegate : NSObject <UIApplicationDelegate> {
A *aPtr;
}
@property (nonatomic, retain) A *aPtr;
@end
@implementation AppDelegate
@synthesize aPtr;
(BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
aPtr = [[A alloc] init]; // blah,blah,blah
然后,在另一个类(在本例中是一个视图控制器)中,我试图以这种方式访问'someStuff':
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSMutableArray *someArray = appDelegate.aPtr.someStuff;
所以,问题在于这种方式很好。我原以为如果你在实现中执行@porperty指定和@synthesize,那么你应该能够直接访问变量,因为编译器实际上创建了get / set函数。
我认为我是一个Java瘾君子,无法理解为什么这不起作用。有谁能让我高兴吗?
非常感谢,
克雷格
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为它没有工作,因为你没有在任何地方初始化arr,在Am中创建一个函数,在app中委托在初始化类A时调用该函数,并且在该函数中的Am中也不要忘记初始化数组。