OC之补充要点(笔记)

来源:互联网 发布:wp7.8软件下载 编辑:程序博客网 时间:2024/06/14 07:36
OC之补充要点(笔记)
1、类:
类中主要包含的内容是特征和行为;源代码逻辑组织结构包括声明部分和实现部分。
2、属性:@property和@synthesize
属性包含set和get方法的声明和实现,另外也默认提供了实例变量,该实例变量与属性名称一致。属性总共替换掉了三部分,归根到底还是通过操作方法来控制实例变量。(重点:让我们知道属性到底在干什么用的)
例子:
.h文件
Student{
第一部分:
//实例变量
int age;
NSString *name;
}
第二部分:
//变量age的访问接口
-(void) setAge:(int)a;//setter赋值方法
-(int) age;//getter取值方法

.m文件
第三部分:
//上述方法的具体实现
-(void) setAge:(int)a{age=a;}
-(int) age{returnage;}

//为简化上述过程,使用OC编程语法 属性
.h文件写属性
@property()int age;这一行替换掉了第二部分代码,也就是方法声明部分
@synthesizeage;这一行替换掉了第一部分和第三部分代码,也就是实例变量的声明和方法的实现

3、方法:单例;便利构造器;自定义初始化
4、内存:
野指针;一个指针指向内存的内容已经被释放或者不知道指向什么东西。解决方法@property(retain,nonatomic)
内存泄露:内存内容长期持有,但没有任何指针指向它,导致其他对象无法访问这块内存。解决方法父类dealloc。[superdealloc]重写父类方法

便利构造器(类方法)中记得[return autorelease];交给自动释放池来管理。
如果写项目时选中ARC的时候,那么以后内存管理就由计算机底层自身发送release,也就是说在IOS5以后,我们就不用写release,计算机会帮我们自动发送这个动作。

5、数据存储区域
-(void) sayHi{
NSString *n=@"hello";
for(inti=0;i<5;i++){
NSLog(@"%@",n);
}
}
栈区:
放在大括号内部的C语言基本数据类型,自动放入栈区,如:int、float、 double、 struct 、char,不用管理内存,直接被机器回收。

堆区:
自己手动开空间的放入堆区,如alloc,当然要手动释放release。我们现在主要操作的就是这个区域。

常量区:
常量数据应该储存在常量区中,永不释放。如:hello、0、5等  static静态的东西也放入常量区

代码段:
通常是指用来存放程序执行代码的一块内存区域。
函数、存代码

6、数组对象排序 块语法 (block 语法)
block函数声明:
Int (^testBlock)(int a, intb);
返回值类型 (^block名字)(传入参数)

7、(重点)区分三种导入的区别:#include ; #import; @class
#include:
C标准,不支持重复导入;

#import:
OC支持重复导入;不支持交叉编译

@class:
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import 用这个方式解决交叉编译






0 0
原创粉丝点击