# iOS OC内联函数 inline

2016-12-22  本文已影响0人  张霸天

在iOS中的一些框架中,static inline是经常出现的关键字组合.

static自不用多说,表示在当前文件中应用,如 static A, 在其它文件中也可以出现static A.不会导致重名的错误.

inline.内联函数.

作用:替代宏.

在框架中出现inline时,如YYKit框架.我们稍加观察就会发现它出现在.h文件中. such as:

static inline CGFloat CGFloatFromPixel(CGFloat value) {
    return value / YYScreenScale();
}

//YYScreenScale()方法说明:
CGFloat YYScreenScale() {
    static CGFloat scale;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        scale = [UIScreen mainScreen].scale;
    });
    return scale;
}

虽然static inline修饰的是函数(或者方法,swift出来后,我觉着方法==函数,朋友们不用咬文嚼字,鄙视我辈了).但它在这里就是宏的作用,即你可以将CGFloatFromPixel当作一个宏.
当然inline函数与宏有区别,inline可以:

结论

为什么inline能取代宏?

优点相比于函数:

优点相比于宏:

inline内联函数的说明

1.内联函数只是我们向编译器提供的申请,编译器不一定采取inline形式调用函数.

2.内联函数不能承载大量的代码.如果内联函数的函数体过大,编译器会自动放弃内联.

3.内联函数内不允许使用循环语句或开关语句.

4.内联函数的定义须在调用之前.

上一篇 下一篇

猜你喜欢

热点阅读