Objective-C dynamic_cast?

前端 未结 3 653
不思量自难忘°
不思量自难忘° 2020-12-05 11:19

Is there an Objective-C equivalent of C++\'s dynamic_cast?

It can be faked using this:

MyClass *safeObject = [object isKindOfClass: [MyClass class]]
         


        
3条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-05 12:02

    Try this macro:

    #define objc_dynamic_cast(obj, cls) \
        ([obj isKindOfClass:(Class)objc_getClass(#cls)] ? (cls *)obj : NULL)
    

    And also don't forget to

    #include 
    

    Use it like:

    MyClass *safeObject = objc_dynamic_cast(originalObject, MyClass);
    

提交回复
热议问题