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