Objective-C中是否有类似C++的安全铸造?我知道它们在Objective C++中,但我不确定可能产生的副作用。使用Objective C++可能会减慢编译时间 - 是否有其他原因不使用它?目标C中的安全铸造
8
A
回答
9
Objective-c确实拥有C++安全的强制转换。或者,我们可以使用运行时反射:
id myOb=[someObject getObject];
NSAssert([myOb isKindOfClass:[MyClass class]], @"Return value is not of type MyClass as expected.");
MyClass * newOb= (MyClass *)myOb;
参考文献:
-1
0
你可以打开编译器标志来警告你这种情况。这个特殊的错误会被-Wconversion标志所捕获。
+0
-Wconversion似乎错过了错误,并提出了很多虚假错误 – Casebash 2010-02-03 22:51:23
相关问题
- 1. Objective-C安全铸造宏
- 2. 安全铸造
- 3. 对象铸造目标-c
- 4. 在python中进行安全铸造
- 5. 安全铸造VARCHAR在Teradata的
- 6. 安全铸造,但EXC_BAD_ACCESS无论如何
- 7. 目标C中的子类化和铸造
- 8. 使用ArrayList条目进行不安全铸造
- 9. 铸造在C#
- 10. C++类铸造
- 11. c中的类型铸造#
- 12. 目标C - Box2D的浮子式铸造:上FLOAT32
- 13. 目标C语法铸造的NSNumber到int
- 14. C++铸造运营商和传统的C铸造运营商
- 15. C#铸造枚举
- 16. 混淆C++铸造
- 17. 对象C铸造
- 18. C#泛型铸造
- 19. 动态铸造C#
- 20. C#铸造奇怪
- 21. 在Java中的类型铸造/铸造
- 22. 铸造目的-1到uint32?
- 23. 目标c - 应用程序委托 - 类型铸造
- 24. 铸造的ExecuteScalar()结果C#
- 25. C#铸造的MemoryStream对FILESTREAM
- 26. C:铸造新的结构VS铸造给定结构
- 27. 铸造指针在一个类型安全的方式
- 28. 这是铸造在我的通用方法安全吗?
- 29. 铸造任意类型的安全使用
- 30. 目标C中的构造函数C
什么是错误的,什么是演员?如果演员将对象转换为其他类型(即从'id'到'NSString *'),则可能会影响编译器如何选择使用哪个选择器(如果有多个具有不同签名的选择器)。 – dreamlax 2010-02-03 05:16:11
在这种情况下,您不能使用'dynamic_cast'(目标不是指向**类**的指针或引用)。改用'static_cast'。 – kennytm 2010-02-03 06:09:41
@KennyTM:谢谢,现在修复它 – Casebash 2010-02-03 06:55:46