定义时,我似乎正在失去静态打字功能,

#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/

10-13 05:29