内联函数是一种小型函数,是以空间换效率的函数,功能较简单,即函数内部没有循环、开关语句等,内联函数的主要作用是在使用中取代宏定义的存在,它与宏定义的主要区别是它会进行类型检查.
简单源码
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
使用
常见使用定义以及使用方法,因为内联函数可以看成另一种形式的宏定义文件
- 定义一个.h文件
- 引入uikit头文件 #import<UIKit/UIKit.h>
- 定义函数
例子
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;
}
.......
网友评论