1.标示符:字母、下划线、美元符号和数字组成,字母和下划线美元符号开头,区分大小写 2.代码区存放代码,数据区存放静态变量和字符串常量,栈存放局部变量,堆存放alloc的对象 3.局部变量:方法和语句块中的声明变量;实例变量:方法之外类内部定义的变量。区别:局部变量可以进行初始化初始值而实例变量不能进行初始化 实例变量例子: @interface Person : NSObject { int age; int sex; } @end 4.数据类型 4.1基本数据类型 数值型,整型,浮点型 字符型 布尔型 空类型 4.2指针数据类型 类 id 5.数据类型格式说明符 int %d, %i short int %hd,%hi long int $ld,%li unsigned int %u unsigned short %hu unsigned long %lu float %f double %f long double %lf char %c byte 1个字节 -128~127 short 2个字节 int 4个字节 long 8个字节 float 4个字节 float a = 23.2f oc中字符使用unicode编码,每个字符占用两个字节 id类型是ob中独有的数据类型,格式化使用%p 6.数据类型转换 容量小的默认转换为容量大的 byte,short,char—>int—>long–>float–>double 7.运算符 b = a++,b=++a; 第一个是先赋值后运算,第二个是先计算后赋值 8.代码规范 8.1大括号要对齐 8.2遇到{要使用tab缩进 8.3方法和程序块之间加换行 8.4运算符两侧加上空格 8.5{前面要又空格 8.6{}成对出现 9.类之间关系 A是B那么可以理解为继承关系: 关联关系: 聚合关系: 10.多态 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果 11.面向对象的核心:万事万物皆对象,可以看成静态属性(实例变量)和动态属性(方法)的结合体 12.类使用 @interface NewClassName:ParentClassName { 实例变量 }
方法声明 @end
@implementation NewClassName 方法的实现 {
} @end
13.方法声明 -(void) method: (int) arguments: 方法类型 返回类型 方法名 参数类型 参数名 +是类方法,-表示实例方法 传递参数时候要遵循传递原则,基本的都要该数据本身,指针类型传递的是对象的指针 14.方法调用或者发送消息 [类名或者对象名 方法名] 或者使用:对象名.方法名; 15.四大区 堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等
16.oc中对象的创建,使用alloc来创建一个对象,编译器会给object对象分配一块可用内存地址,然后需要 对对象进行初始化调用init方法,这样这个对象才能使用 17.初始化方法以init开头,成功之后返回动态类型对象,失败返回nil 18.命名规则 类名首字母大写 实例变量,方法名字使用首字母小写,使用驼峰命名 19.@class 和#import解决循环引用解决死锁问题 比如A引用B而B又引用A,那么使用#import可以解决问题 import包含类所有的信息都会引入 20.property属性 在.h中声明@property @property (nonatomic) int myNumber; 在.m中使用@synthesize myNumber; 这样就可以替换set设置器和访问器
21.property (属性) readwrite:默认,有set和get readonly 只有get,没有set
assign:默认,引用计数器不增加 retain:引用计数增加1
原子性:atomic默认 非原子性:nonatomic (atomic是oc中一种线程保护技术,是防止在未完成的时候,被另外的一个线程使用)