zoukankan      html  css  js  c++  java
  • iOS学习笔记---oc语言第十天

    内存管理高级

    一 属性的内部实现原理   assign   retain    copy

    assign 下的属性内部实现

    setter方法

    @property(nonatomic,assign)NSString *name;

    - (void)setName:(NSString *)name{

        _name = name;

    }

    getter方法

    - (NSString *)name

    {

        return _name;

    }

    retain的setter和getter方法

    @property(nonatomic,retain)NSString *name;
    - (void)setName:(NSString *)name{
        if (_name != name) {
            [_name release];
            _name = [name retain];
        }
    }
    - (NSString *)name
    {
        return [[_name retain] autorelease];
    }

    copy的setter和getter方法

    @property(nonatomic,copy)NSString *name;
    - (void)setName:(NSString *)name{
        if (_name != name) {
            [_name release];
            _name = [name copy];
        }
    }
    - (NSString *)name
    {
        return [[_name retain] autorelease];
    }

    二 dealloc

    dealloc是NSObject的一个实例方法,与alloc对应用于回收开辟的内存空间

    这个方法在对象引用计数为0时,由系统自动调用

    通常我们在dealloc中释放类的实例变量

    永远不要手动调用dealloc

    在dealloc方法的最后一行,必须要写[super dealloc];

    三  便利构造器的内存管理

    Person类的便利构造器

    Person.m中

    + (Person *)personWithName:(NSString *)name{

    Person *p = [[Person alloc] initWithName:name];

    return [p autorelease];

    }

    四  collection 的内存管理

    collection就是NSArray,NADictionary,NSSet...等容器类

    collection 会自主管理自己的内部元素

    加入collection中得对象会被retain

    移除collection的对象会被release

    collection被释放会对内部所有对象release

    五  多态

    不同类型的对象在响应同一方法时的不同实现

    父类指针可以指向子类对象

    多态的特点

    父类指针可以指向不同的子类对象

    允许在多个类中定义同一个消息接口

    可以屏蔽不同子类对象之间的差异,写出通用代码

    适应需求的不断变化

  • 相关阅读:
    curl命令使用
    eclipse安装maven3
    【转】轻松搞定面试中的二叉树题目
    【转】轻松搞定面试中的链表题目
    CPP_运算符重载及友元
    CPP_template
    CPP基础
    CPP_封装_继承_多态
    CPP_类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数
    CPP_const&static
  • 原文地址:https://www.cnblogs.com/limicheng/p/3829361.html
Copyright © 2011-2022 走看看