2

Objective-C 是否具有类似于 C# 中的“as”运算符的强制转换运算符,或者推荐的方法是使用 isKindOfClass 方法来测试对象,如果是,则将对象强制转换为所需的类?
在 C# 中,我这样做:

Class1 o1 = obj as Class1;
if (o1 != null)
{
    // ...
}

在 Objective-C 中我应该这样做:

if ([obj isKindOfClass:[Class1 class]]) {
    Class1* o1 = (Class1*)obj;
    // ...
}
4

2 回答 2

1

您是对的,isKindOfClass这是检查对象是给定类的实例还是子类的实例的正确 Objective-C 方法。

但是看看下面的答案

为各种简洁的宏、类别甚至 C++ 模板提供模仿 C++dynamic_cast或 C#as运算符的语法。

于 2013-07-08T15:10:16.230 回答
-1
class A { }
class B : A { }

A a = new A();
if(a.GetType() == typeof(A)) // returns true
{
}

A b = new B();
if(b.GetType() == typeof(A)) // returns false
{
}

或者

test ts = new test();
            object ob = ts;

            if (typeof(test) == ob.GetType())
               {
                   return true;
               }
于 2013-07-08T14:52:26.537 回答