我正在重新发布我之前发布的这个问题。当我在描述这个问题之前,我忽略了一些重要的信息,这些信息导致人们在尝试提供解决方案时走上错误的道路。希望这可以更好地解释。通过一些其他类访问变量
我在Objective-C中有一个情景,我试图通过另一个对象访问对象的变量。该班(简化):
啊
@interface A : NSObject {
NSMutableArray *someStuff;
}
@property (nonatomic, retain) NSMutableArray *someStuff;
@end
上午
@implementation A
@synthesize someStuff;
// blah, blah, blah
然后,因为我正在做一个iPhone应用程序,有一个包含该对象类型的变量的应用程序代理:
AppDelegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate> {
A *aPtr;
}
@property (nonatomic, retain) A *aPtr;
@end
AppDelegate.m
@implementation AppDelegate
@synthesize aPtr;
(BOOL)应用:(UIApplication的*)应用didFinishLaunchingWithOptions:(NSDictionary的*)launchOptions {
APTR = [[A的alloc] INIT]; //等等,等等,等等
然后,在另一个类中(在此情况下的视图控制器),我试图以这种方式访问 'someStuff':
AViewController.mAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSMutableArray *someArray = appDelegate.aPtr.someStuff;
因此,问题在于,这种风波很好。我曾想过,如果你在实现中使用@porperty指定和@synthesize,那么你应该能够直接访问变量,因为编译器实际上创建了get/set函数。
我觉得我太过分了解Java为什么不能工作。任何人都能让我放松吗?
非常感谢,
克雷格
试试这个,AppDelegate * appDelegate =(AppDelegate *)[[UIApplication sharedApplication] delegate]; NSLog(@“aPtr:%@ \ nsomeStuff:%@”,appDelegate.aPtr,appDelegate.aPtr.someStuff); – Ravin 2011-04-14 04:17:30