美文网首页
面向对象编程

面向对象编程

作者: lilinjianshu | 来源:发表于2016-03-01 21:10 被阅读24次

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

    相关文章

      网友评论

          本文标题:面向对象编程

          本文链接:https://www.haomeiwen.com/subject/higgkttx.html