美文网首页
ios 基础知识整理(一)

ios 基础知识整理(一)

作者: 90后的晨仔 | 来源:发表于2020-09-11 09:58 被阅读0次

    一、Swift 和OC 如何相互调用?

    1.Swift 调用 OC代码
    • 需要创建一个 Target-BriBridging-Header.h 的桥文件,在乔文件导入需要调用的OC代码头文件即可
    2.OC 调用 Swift代码
    • 直接导入 Target-Swift.h文件即可, Swift如果需要被OC调用,需要使用@objc 对方法或者属性进行修饰

    二、类(class) 和 结构体(struct) 有什么区别?

    1.Class 是引用类型(指针类型)

    引用类型只会使用引用对象的一个"指向"; 赋值给var、let或者给函数传参,是将内存地址拷贝一份,类似于制作一个文件的替身(快捷方式、链接),指向的是同一个文件。属于浅拷贝(shallow copy)。 比如Class,是在堆空间上存储和操作的。

    2.Struct 是值类。

    值类型在传递和赋值时将进行复制; 赋值给var、let或者给函数传参,是直接将所有内容拷贝一份,类似于对文件进行copy、paste操作,产生了全新的文件副本。属于深拷贝(deep copy)。比如结构体,枚举,是在栈空间上存储和操作的。

    三、类对象与元类对象有什么区别和联系?

    1.实例对象通过"isa"指针找到类对象,类对象中存储方法列表等信息。类对象通过“isa”指针可以找到元类对象,从而可以访问类对象的类方法等一些信息。类对象与元类对象都是objc_class数据结构,都是继承于objc_object,所以才有isa指针。所以才有上述所说的那些操作。
    2.元类的isa指针都是指向root Class(根元类对象),根元素类对象指向根类对象。如果根类中找不到方法就会直接去根类对象去查找相同的实例方法。

    四、 调用的类方法没有实现,但是实例方法有实现,会不会崩溃?

    不会,因为通过isa指针查找的顺序,如果根元类对象中找不到类对象的方法列列表的话就会通过“isa”指针去根类对象查找同名的实例方法与实现。然后产生实际的调用。

    相关文章

      网友评论

          本文标题:ios 基础知识整理(一)

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