swift与oc的关系

swift是对oc的扩展

Swift是没有消息机制的Objective-C

https://www.oschina.net/translate/inside-swift;

 

swift保持了oc的类结构形式,对函数的派发机制做了调整。

 

一、class

swift完全继承了oc class类的运行时结构;

或者说swift class 和 oc class的运行时结构具有等价性;

 

swift的编译器将class的缺省运行机制编译为静态派发和虚函数表派发;

添加特殊@objec符号后,使用的是oc运行的动态派发机制;

 

因为具有相同的运行时结构,所以能够相互调用。

 

二、内存管理

 

Class Layout

Swift relies on the following assumptions about the Objective-C runtime, which are therefore now part of the Objective-C ABI:

  • 32-bit platforms never have tagged pointers. ObjC pointer types are either nil or an object pointer.
  • On x86-64, a tagged pointer either sets the lowest bit of the pointer or the highest bit of the pointer. Therefore, both of these bits are zero if and only if the value is not a tagged pointer.
  • On ARM64, a tagged pointer always sets the highest bit of the pointer.
  • 32-bit platforms never perform any isa masking. object_getClass is always equivalent to *(Class*)object.
  • 64-bit platforms perform isa masking only if the runtime exports a symbol uintptr_t objc_debug_isa_class_mask;. If this symbol is exported, object_getClass on a non-tagged pointer is always equivalent to (Class)(objc_debug_isa_class_mask & *(uintptr_t*)object).
  • The superclass field of a class object is always stored immediately after the isa field. Its value is either nil or a pointer to the class object for the superclass; it never has other bits set.

The following assumptions are part of the Swift ABI:

  • Swift class pointers are never tagged pointers.

 

https://github.com/apple/swift/blob/master/docs/ABI/TypeLayout.rst

 

三、其他类型

struct、enum、protocol

 

 

四、其他范式

范型、函数式编程

 

参考文献:

https://www.cnblogs.com/feng9exe/p/10573772.html

 

转载于:https://www.cnblogs.com/feng9exe/p/11225009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值