繁体   English   中英

(AppDelegate *)的含义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM