0

定义时,我似乎失去了静态打字能力,

#define myAppDelegate (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate]

去做这个,

[myAppDelegate doSomething];

Xcode 不知道doSomething是什么,尽管只要我知道自己在做什么,它就会编译并运行良好,而且doSomething实际上存在于 myAppDelegate 上!

有什么办法可以克服这个吗?

4

1 回答 1

1

你不会丢失它,不 - 你可能省略了#import,或者 s 的顺序#import可能是错误的。

有什么办法可以克服这个吗?

只需使用一个功能:

WorkClockAppDelegate * myAppDelegate() {
  // TODO add error checking
  return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}

或方法:

+ (WorkClockAppDelegate *)workClockAppDelegate {
  // TODO add error checking
  return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}

引入类型安全。

尽管您可以使用extern变量,但这不是很安全。

使用#define不是一个好的解决方案,imo。

于 2012-08-18T22:04:20.970 回答