一、提要
通过以官方的CGSize为例,自定义Objective-C中的结构体,并使用。
二、CGSize
1、系统定义的CGSize结构体
struct CGSize { CGFloat width; CGFloat height; };
注释:
结构体的自定义
struct 结构体名{
类型名 成员名1;
类型名 成员名2;
... ...
类型名 成员名n;
};
typedef struct CG_BOXABLE CGSize CGSize;
注释:
使用typedef struct CG_BOXABLE CGSize CGSize给结构体定义别名
2、CGSizeMake 结构赋值方法
CG_INLINE CGSize CGSizeMake(CGFloat width, CGFloat height) { CGSize size; size.width = width; size.height = height; return size; }
注释:
* 这里CG_INLINE是一个宏:#define CG_INLINE static inline,这是系统的一个宏,如果你不用这个宏,可以直接写成static inline CGSize CGSizeMake(CGFloat width, CGFloat height)。
* inline 内联函数: 即在编译的时候将函数体替换函数调用,从而不需要将parameter,return address进行push/pop stack的操作,从而加速app的运行,然而,会增加二进制文件的大小。
三、自定义结构体
以自定义一个九宫格行列数为例
struct JGGRowListNum {
CGFloat row;
CGFloat list;
};
typedef struct JGGRowListNum JGGRowListNum;
CG_INLINE JGGRowListNum JGGRowListNumMake (CGFloat row, CGFloat list)
{
JGGRowListNum jGGRowListNum;
jGGRowListNum.row = row;
jGGRowListNum.list = left;
return jGGRowListNum;
};