[英]Meaning of (AppDelegate *)
有人可以在以下代码段中解释什么(AppDelegate *)
吗?
(AppDelegate *)[[UIApplication sharedApplication] delegate] iPad]
[[UIApplication sharedApplication] delegate]
返回一个id
。 所以您不能访问它的例如window
属性(因为id对象没有它)。
(AppDelegate *)
语句导致将id
“转换”为AppDelegate
对象,因此您可以访问其组件。
就像拥有NSObject *obj1;
和NSString *obj2;
-您不能使用obj1
-substringToIndex:
...
该代码将[[UIApplication sharedApplication] delegate]
的返回值转换为AppDelegate *
类型。
这不是绝对必要的,但是当您在可能不支持该方法调用的类上调用方法iPad
时,它将防止编译器警告。 当然,假设AppDelegate
有一个称为iPad
的方法。
委托方法返回一个id(未分类的对象),因此编译器没有有关返回的对象的信息,尤其是不知道它是否具有iPad方法。 没关系,但这会使事情变得模糊(动态键入)。 通过将返回的对象显式转换为AppDelegate类,可以告诉编译器您知道返回的委托对象是AppDelegate实例。 这使编译器可以检查您的AppDelegate类是否具有iPad方法(静态键入)。 这很好,因为现在编译器可以执行更准确的错误检查。 编译器只是相信您的演员表,所以请不要撒谎! 如果您撒谎,然后将iPad
消息发送到没有 iPad方法的对象,则您的应用程序可能会在运行时崩溃。
它只是类,用于将委托转换为AppDelegate
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.