美文网首页IOS 拾遗
静态类型检查总结

静态类型检查总结

作者: madaoCN | 来源:发表于2017-05-14 23:15 被阅读6次
    • 对于id类型的变量,调用任何方法都能够通过编译(调用不存在的方法时候会抛出运行时错误)

    id类型可以存储任何类型的对象,无法通过—>来获取类的实例变量和方法。

    • id类型和定义了为其他类型的对象可以相互赋值

    赋值操作包括=赋值,传参数,和返回值。

    • 强类型变量(静态类型),如果调用类或者父类中不存在的方法,编译器会抛出警告
    • 若是静态类型变量,子类型的实例变量可以赋值给父类的实例变量
    • 若是静态类型变量,父类型的实例变量不可以赋值给子类的实例变量
    • 判断哪个类的方法被执行,需要查看实际执行这个变量的类型(动态性)
    • id类型

    为什么id 类型 不是 *id 呢?
    objc/objc.h中的定义

    /// A pointer to an instance of a class.
    typedef struct objc_object *id;
    

    A pointer to an instance of a class.意思是指 id是指向类实例的一个指针,所以id本身就是一个指针,不需要加*号了。

    相关文章

      网友评论

        本文标题:静态类型检查总结

        本文链接:https://www.haomeiwen.com/subject/varcxxtx.html