面向对象编程

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方法赋值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容