OC中内存管理 assign, retain, copy 的 setter 和 getter 方法

原创 2015年11月21日 20:04:16

最近关于 setter 和 getter 方法突然有些晕, 所以重新做了整理

内存管理 assign, retain, copy 的 setter 和 getter 方法

assign的 setter 和 getter 方法(用来定义简单数据类型)

@property (nonatomic, assign) NSString *name;

1. assign 的 setter 方法

- (void)setName:(NSString *)name {
    _name = name;
}

2. assign 的 getter 方法

- (NSString *)name {
    return _name;
}

retain的 setter 和 getter 方法( 一般用来定义有数据结构的类对象)

@property (nonatomic, retain) NSString *name;

1. retain 的 setter 方法

- (void)setName:(NSString *)name {
    if (_name != name) {
        //如果_name 原本指向的内存空间和 name 的内存空间不相同时, 在这里重新设置 _name 属性的值时, 需要将原来的空间释放掉, 再重新指向name 的内存空间.
        [_name release];
        _name = [name retain];
    }
}

2. retain 的 getter 方法

- (NSString *)name {
    return [[_name retain] autorelease];//getter 方法不会引起引用计数加 1
}

copy的 setter 和 getter 方法(一般用来设置 NSString)

@property (nonatomic, copy) NSString *name;

1. copy 的 setter 方法

- (void)setName:(NSString *)name {
    if (_name != name) {
        [_name release];
        _name = [name copy];//copy和 retain 的不同之处在于, copy 另外开辟一块空间, 而 retain 是在name 的内存空间上引用计数加 1
    }
}

2. copy 的 getter 方法

- (NSString *)name {
    return [[_name retain] autorelease];
}

dealloc方法的作用

为了解决在类对象释放时, 残留的类对象属性变量的内存空间没有被释放的问题, 所以在 dealloc 方法中需要先释放属性变量的内存空间.
在 ARC 中, 有系统对内存进行管理, 不用写 dealloc 方法.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IOS retain copy assign alloc atomic nonatomic 内存管理和getter setter方法!

IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 ...

IOS内存管理retain,assign,copy,strong,weak

IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。(一般情...

Objective-c 的 内存管理和@property strong,weak,assign,copy,retain等关键字介绍

@property strong,weak,assign,copy,retain等关键字@property介绍 OC意识到当getter方法和setter方法遇到一个类有大量的实例变量时,ge...

NSCopying协议的使用,setter和getter方法的作用,内存管理高级,集合的内存管理

#import "Teacher.h" @interface Student : NSObject { Teacher *_tea;//学生类的实例变量 } @property (nonato...

OC基础:内存(进阶):retain.copy.assign的实现原理

retain copy assign的内部实现原理

IOS属性(@property)的修饰词assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite解释、以及一部分内存优化方法

修饰词:assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite 其中 ARC:assign、weak、strong...

iOS内存管理:strong,weak,retain,assign

strong与weak是由ARC新引入的对象变量属性 xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的。xcode 4.3(ios5...

iOS开发学习手动内存管理暂时抛弃ARC以及retain/assign知识——iOS工程师面试必考内容

转载自:http://blog.csdn.net/weisubao/article/details/39956563 我们为什么需要内存管理?当使用内存达到40M和45M时候会发出警告,如果...

OC学习笔记-内存管理、retain、release和retainCount

#import // OC通过引用计数器管理内存 // 一个引用计数器本质是上一个整数 // 引用计数器,存储在对象内部,占据4个字节的存储空间 // 引用计数器的数值表示该对象被引用的次数 //...

黑马程序员——IOS基础——OC内存管理循环retain和autorelease

涉及到循环引用:身份证Card和人Person
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)