一、提要

通过以官方的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;
};  



05-07 15:51