作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这行代码做了什么?
MyObject *objectOne = (MyObject *)recognizer.view;
我对 (MyObject *)
感到困惑。
它是否有效地将 recognizer.view
指针转换为 MyObject
?
谢谢。
最佳答案
是的 (MyObject *)
正在将 recognizer.view
静态转换为 MyObject
,这是一个 UIView
。这允许您在 objectOne 上调用 MyObject 特定的方法/属性。如果没有转换,编译器将只允许您调用 UIView 方法。
这可能是不安全的,因为您假设 recognizer.view 是 MyObject 类型。如果这个假设不正确,可能会发生坏事。有一种更安全的方法可以做到这一点。
定义一个辅助方法来为您安全地转换:
static inline id MySafeCast(Class klass, id obj) {
return [obj isKindOfClass:klass] ? obj : nil;
}
如果您对类型的假设错误,该方法将返回 nil。
// objectOne will be nil if recognizer.view is not a MyObject
MyObject *objectOne = MySafeCast([MyObject class], recognizer.view);
关于ios - MyObject *objectOne = (MyObject *)recognizer.view;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924557/
这行代码做了什么? MyObject *objectOne = (MyObject *)recognizer.view; 我对 (MyObject *) 感到困惑。 它是否有效地将 recognize
我是一名优秀的程序员,十分优秀!