通过cocoa中的全局委托访问变量

通过cocoa中的全局委托访问变量,cocoa,Cocoa,我使用下面的代码访问iPhone(CoaTouch)项目中的变量“myInt” 它起作用了 但是,当我尝试将项目迁移到Cocoa时,我发现没有办法实现与上面相同的功能。如何使用委托概念访问全局变量(不使用'extern NSInteger myInt') 下面的代码不起作用 appDelegate =(AppDelegate *)[[NSApplication sharedApplication] delegate]; NSApplication *app=[NSApplication shar

我使用下面的代码访问iPhone(CoaTouch)项目中的变量“myInt”

它起作用了

但是,当我尝试将项目迁移到Cocoa时,我发现没有办法实现与上面相同的功能。如何使用委托概念访问全局变量(不使用'extern NSInteger myInt')

下面的代码不起作用

appDelegate =(AppDelegate *)[[NSApplication sharedApplication] delegate];
NSApplication *app=[NSApplication sharedApplication];
appDelegate.myInt=1;
appDelegate.myInt不返回任何内容


欢迎发表任何评论

我想在第二个代码片段中,您没有将
myInt
声明为委托类的一个属性(或者声明不正确),这意味着您不能使用点语法
obj.prop
访问它。你可以做两个简单的改变

使用常规旧方法调用语法访问myInt:

[appDelegate myInt];
或者更改应用程序委托以将该变量声明为属性:

@interface MyAppDelegate : NSObject <NSApplicationDelegate> {
    NSInteger myInt;
}
@property (assign) NSInteger myInt;
@end

我想您可以确保
appDelegate
确实是
appDelegate
的一个实例

NSLog(@"[appDelegate isKindOfClass:[AppDelegate class]] returns %@", [appDelegate isKindOfClass:[AppDelegate class]] ? @"YES" : @"NO");

虽然我发现您不太可能同时确保
appDelegate
不是零。

您所说的“当我尝试将项目迁移到Cocoa时”是什么意思?Cocoa只是一个框架,您的第一个代码段也使用了这个框架
@implementation MyAppDelegate
@synthesize myInt;
@end
NSLog(@"[appDelegate isKindOfClass:[AppDelegate class]] returns %@", [appDelegate isKindOfClass:[AppDelegate class]] ? @"YES" : @"NO");