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