内联函数的使用

2016-06-18  本文已影响157人  谁在弹奏一曲东风破

内联函数是一种小型函数,是以空间换效率的函数,功能较简单,即函数内部没有循环、开关语句等,内联函数的主要作用是在使用中取代宏定义的存在,它与宏定义的主要区别是它会进行类型检查.

简单源码

inline int foo(int a, int b){
    return a + b;
}

inline是内联函数的关键字,表明后面的函数是一个内联函数,内联函数是c++的语法,所以函数按照c++函数的形式;

在iOS中可以这样使用

UIKIT_STATIC_INLINE CGRect CGFitRectMake(CGFloat x, CGFloat y , CGFloat width , CGFloat height){
    CGFloat scale = [UIScreen mainScreen].bounds.size.width/375;
    CGRect frame;
    frame.origin.x = x * scale;
    frame.origin.y = y * scale;
    frame.size.width = width * scale;
    frame.size.height = height * scale;
    return frame;
}

其中

 #define UIKIT_STATIC_INLINE static inline

使用

常见使用定义以及使用方法,因为内联函数可以看成另一种形式的宏定义文件

例子
McGeometric.h

#import <UIKit/UIKit.h>

UIKIT_STATIC_INLINE CGRect CGFitRectMake(CGFloat x, CGFloat y , CGFloat width , CGFloat height){
    CGFloat scale = [UIScreen mainScreen].bounds.size.width/375;
    CGRect frame;
    frame.origin.x = x * scale;
    frame.origin.y = y * scale;
    frame.size.width = width * scale;
    frame.size.height = height * scale;
    return frame;
}

UIKIT_STATIC_INLINE NSString* JoinMuiltString(NSString * a,...){
NSMutableString *temString = [[NSMutableString alloc] initWithString:a];
    va_list ap;
    va_start(ap, a);
    while (1) {
       NSString * b = va_arg(ap, NSString*);
       if (b == nil) {
          break;
        }
       NSLog(@"==%@",b);
       [temString appendString:b];
    }
    va_end(ap);
    return temString;
}

.......
上一篇下一篇

猜你喜欢

热点阅读