使用#define访问App Delegate对象不起作用

Bon*_*ond 7 iphone objective-c

我在不同的类中使用App Delegate对象.我希望在整个项目中访问它.我在Prefix.pch文件中定义此对象为

#define Appdelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]
Run Code Online (Sandbox Code Playgroud)

但问题是Appdelegate变量不能访问App委托变量.它显示错误.

但如果使用此代码工作正常

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.variablename;
Run Code Online (Sandbox Code Playgroud)

我这样做是对还是有办法做我做的事情?

提前致谢.

MBy*_*ByD 15

应该:

#define Appdelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
//                  ^----------------------parenthesis--------------------------^
Run Code Online (Sandbox Code Playgroud)

  • 对.使用`#define`,执行`[Appdelegate variablename]`可以工作,但不能运行`Appdelegate.variablename`.因为如果省略外括号,则对整个表达式进行转换为`(AppDelegate*)`,在本例中为`variablename`. (5认同)