多个对象内存管理-setter方法

1)基本数据类型或者C语言的构造类型(如int float double long struct enum)可直接赋值,示例代码:

-(void)setAge:(int)age

{

  _age=age;

}

2)OC对象类型,release旧对象,retain新对象,示例代码:

-(void)setCar:(Car *)car

{

    //1.先判断传进来的是不是原来的对象

     if(car!=_car){

        //2 对旧对象做一次release

        [_car release];//若没有旧对象,则没有影响

        //3.对新对象做一次retain

        _car=[car retain];

    }

} 
时间: 2024-11-08 09:04:26

多个对象内存管理-setter方法的相关文章

OC7_复合类内存管理(setter方法)

// // Person.h // OC7_复合类内存管理(setter方法) // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "Dog.h" @interface Person : NSObject { Dog *_dog; } -

Unit03 - 对象内存管理 、 继承的意义(上)

Unit03 - 对象内存管理 . 继承的意义(上) 1.内存管理:由JVM来管理的  1)堆:    1.1)存储所有new出来的对象(包含成员变量)    1.2)没有任何引用所指向的对象就是垃圾,        垃圾回收器(GC)不定时清理垃圾,        回收过程是透明的(看不到的),        调用System.gc()建议GC尽快来回收    1.3)成员变量的生命周期:          创建对象时存在堆中,对象被回收时一并被回收    1.4)内存泄露:不再使用的对象没有

黑马程序员---OC基础7【ARC概念】【ARC对象内存管理】【分类Category】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [ARC概念]   1.指针的分类 1)强指针,默认的情况下,所有的指针都是强指针,关键字strong: 2)弱指针,_ _weak关键字修饰符的指针 2.ARC概念 自动引用计数 永远不要写retain和release.autorelease三个关键字 编译器会在编译的时候自动插入retain和release.autorelease, 是一个编译器的特性:“垃圾回收”是运行时的特性 3.ARC工

Objective-C 【单个对象内存管理】

------------------------------------------- 单个对象内存管理 (1)野指针 ①定义了一个指针变量,但是并没有赋初值,它随机指向一个东西 ②某指针变量指向的内存空间被释放掉了(指向僵尸对象的指针) (2)僵尸对象 已经被销毁的对象(无法被使用的对象) (3)空指针 没有指向存储空间的指针(里面存的是nil,也就是0) 给空指针发消息是没有任何反应的,不会提示出错 代码: #import <Foundation/Foundation.h> @interf

单个对象内存管理

前文我们已经说了内存管理的原则:只要出现了new alloc retain ,就一定会配对出现一个release,autorelease 那么当我一个对象被释放之后,如果我们再次调用这个对象的方法(包括这个对象的retain release方法),将会出现 野指针 错误,在xcode中具体表现为 EXC_BAD_ACCESS:访问了不可访问的内存空间,就会导致这个错误. 下面这个例子#import <Foundation/Foundation.h> int main (int argc, co

Objective-C 【多个对象内存管理(野指针&amp;内存泄漏)】

------------------------------------------- 多个对象内存管理(野指针&内存泄漏) (注:这一部分知识请结合"单个对象内存管理"去理解) 这一部分的知识比较简单,就牵扯到一个会产生野指针的情形和如何避免内存泄漏问题. 代码: #import <Foundation/Foundation.h> @interface Car : NSObject -(void)run; @end @implementation Car //监控

【cocos2d-x 3.x 学习笔记】对象内存管理

内存管理 内存管理一直是一个不易处理的问题,开发者必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等.内存管理的核心是动态分配的对象必须保证在使用完毕后有效地释放内存,即管理对象的生命周期.由于C++是一个较为底层的语言,其设计上不包含任何智能管理内存的机制.一个对象在使用完毕后必须被回收,然而在复杂的程序中,对象所有权在不同程序片段间传递或共享,使得确定回收的时机十分困难,因此内存管理成为了程序员十分头疼的问题. 另一方面,过于零散的对象分配回收可能导致堆中的内存碎片化,降低内存的

oc44--多对象内存管理

// Room.h #import <Foundation/Foundation.h> @interface Room : NSObject @property int no;// 房间号 @end // Room.m #import "Room.h" @implementation Room - (void)dealloc { NSLog(@"%s no = %i", __func__, _no); [super dealloc]; } @end //

oc45--多对象内存管理 优化

// // main.m // Set方法的内存管理 #import <Foundation/Foundation.h> #import "Person.h" #import "Room.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 1.创建两个对象 Person *p = [[Person alloc] init]; Room *r = [[Room alloc]