我在定义时似乎失去了静态类型能力,
#define myAppDelegate (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate]
为此,
[myAppDelegate doSomething];
Xcode 不知道 doSomething 是什么,尽管只要我知道我在做什么,它就会编译并运行良好,并且 doSomething 实际上存在于 myAppDelegate 上!
有什么办法可以克服这个问题吗?
最佳答案
您不会丢失它,不 - 您可能省略了 #import
,或者 #import
的顺序可能是错误的。
Is there any way I can overcome this?
只需使用一个函数:
WorkClockAppDelegate * myAppDelegate() {
// TODO add error checking
return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}
或方法:
+ (WorkClockAppDelegate *)workClockAppDelegate {
// TODO add error checking
return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}
引入类型安全。
虽然您可以使用 extern
变量,但这不太安全。
在我看来,使用#define
并不是一个好的解决方案。
关于ios - 使用 #DEFINE 语句时您是否会失去静态类型能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022330/