Swift 内联

1.内联是指在编译期把每一处方法调用替换为直接执行方法内部的代码.

这是个很棒的特性,可以帮你避免运行时方法调用的时间开销。下面是内联的一个简单例子:

struct Bird {
	var name = ""
	func fly() {
		print("\(name)在飞翔")
	}
}
func birdFly(bird: Bird) {
	bird.fly()
}
let mq = = Bird(name: "麻雀") 
birdFly(mq)

由于函数是内联的,所以在编译 birdFly 函数调用时,会使用 birdFly 内部的代码替换掉 birdFly 的调用,然后用传入的实参(mq)替换方法的形参 bird 的位置,经过内联优化之后,运行时的代码会变为:

let my = Bird(name: "麻雀")
mq.fly()

Bird 是结构体,所以实列方法 fly 可以继续内联,此时会使用 fly 方法内部的代码替换掉 fly 方法调用, 然后再参数 name 的位置放置 mq 的name,此时上述代码变为:

let my = Bird(name : "麻雀")
print("\(mq.name)在飞翔")

此时内联的优化结束了,代码中不再有方法和函数。运行时执行到上述代码时首先在栈上分配空间保存 mq 实列,接着代码顺序执行,在方法的具体实现结束后, mq 在栈上分配的内存会被回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值