关键字

##static  关键字用来优化初始化变量之类代价高的操作。
void someFunction()
{
  //不论调用多少次 x只会创建一次
  static Expensive *x = [[Expensive alloc] initWithData:..];
  //操作x
}

int main(int argc,char *argv[])
{
  someFunction();  //x在someFunction中创建
  someFunction();  //x已经存在,不会再次创建
  return 0;
} 


##struct 是一种可以包含多个自变量的自定义类型, 在ruby中,和Struct类似。
//定义一个结构体
struct Point
{
  float x;
  float y;
};

//声明结构体实例
struct Point p;
p.x = 10;
p.y = 10;

//复合结构体
struct Line
{
  struct Point start;
  struct Point end;
};


##typedef  使用类型定义。每一次想定义一个点的时候都要输入struct Point,  Obj-C中提供一个便捷的方法,就是使用结构体typedef。

#import <Foundation/Foundation.h>
//声明结构体
typedef struct
{
 float x;
 float y;
} Point;

int main(int argc,const char *argv[])
{
  //声明点变量
  Point p;
  //给结构体成员赋值
  p.x = 10;
  p.y  = 10;

  //使用这个点
  moveCursorToPoint(p);
  
  return 0;
}


##enum 枚举.
//创建枚举类型
enum MyEnum
{
  Value1,
  Value2,
  Value3
};

//使用枚举
enum MyEnum foo;
foo = Value1;

//或者函数
enum MyEnum myFunction();

//作为函数参数
void myFunction(enum MyEnum foo);

//枚举实际值是由编译器决定的,默认是整型。从0开始,往后递增。也可以强制给枚举成员赋值
enum MyEnum
{
  Value = 20,
  Value = 13,
  Value = 155
}

//配合typedef使用
enum MyEnumType
{
  Value1,
  Value2,
  Value3
};
typedef enum MyEnumType MyEnum;

//使用
MyEnum foo;
foo = Value1;

你可能感兴趣的:(struct,static,typedef)