1、Object Oriented Programming简称OOP
2、面向对象的特征
(1)抽象:面向对象编程的过程就是抽象的过程
(2)封装:将类封装起来,提供对类成员的访问权限,这样更安全
(3)继承:通过继承可以重用程序代码
(4)多态:一个方法多种状态,方法的动态绑定或调用
3、类的声明和实现
(1)类的创建
a、NSObject 是OC里面的顶级父类
b、 :是继承关系
c、以@interface开始,以@end结尾
4、声明静态变量
静态变量只能声明在类的实现部分,不能声明在类的声明部分,静态变量是所有对象共享的
5、方法的声明
//实例方法以减号(-)开头
//所有类型都使用()括起来
-(void)setPid:(int)pid;
-(int)pid;
6、声明静态方法
静态方法一加号(+)打头
+(void)staticMethod1;
+(NSString*)staticMethod2;
7、多参数方法的声明
-(void)setPid:(int)pid andName:(NSString*)name andAge:(int)age;
8、类存管理基础
(1)占stack内存和堆heap内存
a、栈stack特点:先进后出,系统自动分配空间
b、堆heap特点:经过排序的树形数据结构,通常是二叉树,常用来实现优先队列,堆得存取是随意的,由程序员自己分配和释放
2、内存的静态分配和动态分配
静态分配的内存在栈内存中,由系统分配,系统释放,自由度低
动态分配的内存在堆内存中,由程序员自己灵活分配,需要自己管理内存,自由度高
9、内存管理常见的问题
(1)内存泄露 声请了一块内存,没有释放
(2)提前释放 释放了一个没有使用完的内存
(3)重复释放 对一块内存释放多次,造成内存崩溃
10、c语言中如何管理内存
char*str;
str=(char*)malloc(100*sizeof(char));//heap堆内存里面声请空间
//数组
free(str);
int*arr;
arr=(int*)malloc(100*sizeof(int));
free(arr);
//calloc realloc
//2、c++
// Person p1;//stack
Person*p2=newPerson();
delete p2;
11、引用计数(Objective-c的内存管理)
(1)对象的生命周期
(2)oc的内存管理原理-引用计数
oc中对象被分配在堆内存中,每个对象都有一个整型引用计数值,来标示该对象被引用的次数
(3)
alloc 分配内存
dealloc 释放内存
new 分配内存(不常用) init
copy 分配内存(拷贝内容 非地址)
retain 引用计数会自动加1
release 引用计数会自动减1
autorelease 自动释放内存
retainCount保留计数值
//alloc引用计数会加1
Animal*a=[[Animalalloc]init];
NSUIntegercount=[aretainCount];
NSLog(@"count=%ld",count);
NSLog(@"------");
[aretain];//retain引用计数会加1
count=[aretainCount];
NSLog(@"count=%ld",count);
NSLog(@"------");
[arelease];//引用计数会减1
count=[aretainCount];
NSLog(@"count=%ld",count);
12、关联对象的内存管理
(1)对象之间的关联关系
单向关联
双向关联
1:1关联
1:n关联
n:m关联
(2)init赋值
(3)set方法赋值
网友评论