误释放对象

问题一:


value = [array objectAtIndex:n]; //得到一个数组中的对象
[arry removeObjectAtIndex:n]; //卸载那个对象

因为value得到了那个对象,但是由于另外一个拥有者release了该对象,所以其实value现在成了摇摆指针(无效数据)

问题二:


myArray = [NSArray array];
...
[myArray release];

NSArray返回的是一个自动释放对象,不仅myArray不应该在一段时间后release,而应该在适当的时候先retain,以防止该array被系统误释放。

问题三:


rocket = [rocketLauncher aRocket];
[rocketLauncher release];

和array这种数据收集类对象一样,如果我们得到了一个类的子对象而不retain它,那么在原父类被释放的时候,这个rocket其实也会失去其意义。

时间: 2024-11-09 02:47:33

误释放对象的相关文章

不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 对象的动态创建和释放 对象的赋值和复制 静态属性和静态函数 类模板 示例1.CppEmployee 类CppEmployee.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppEmployee { int Number; // 默认为 private private: // 以下都是

虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数-&gt;抽象类,基类虚析构函数使释放对象更彻底

为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include<iostream> 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ void who(){ //define this function to virtual will be normal 7 cout << "this is th

释放对象的引用

一个局部变量的生命周期只存在于其自身类中.如下的例子可以发现,局部变量只能存在于声明该变量的方法中. public class TestLifeOne { public void read() { int s=42; //s只能限于read()中使用,别处无法使用 sleep(); } public void sleep() { s=7; //s在此处无法使用 } } 对于实例变量,其寿命与对象的寿命相同.对象未“死”,实例变量也未“死”. public class TestLifeOne {

Objective-C:MRC手动释放对象内存举例(引用计数器)

手机内存下的类的设计练习: 设计Book类, 1.三个成员变量: title(书名)author(作者).price(价格) 2.不使用@property,自己完成存取方法(set方法,get方法) 3.加入必要其他的方法 4.并对Book类进行测试 .h声明文件 1 // Book.h 2 // 引用计数器 3 // 4 // Created by ma c on 15/8/13. 5 // Copyright (c) 2015年 bjsxt. All rights reserved. 6 /

Objective-C:ARC自动释放对象内存

ARC是cocoa系统帮你完成对象内存释放的引用计数机制 .h文件 1 // Person.h 2 // 01-ARC 3 // 4 // Created by ma c on 15/8/13. 5 // Copyright (c) 2015年 bjsxt. All rights reserved. 6 // 7 8 #import <Foundation/Foundation.h> 9 10 @interface Person : NSObject 11 @property(nonatomi

JavaSE8基础 释放对象的引用 指向新对象或赋值为null

礼悟:    好好学习多思考,尊师重道存感恩.叶见寻根三二一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. jdk:jdk-8u131-windows-x64             os:windows7 x64            ide:MyEclipse 2017 Javaer类的代码 package jizuiku.demo; /** * * * @author 给最苦 * @version V17.11.05 */ publi

winForm 中子窗体关闭但不释放对象,方便下次继续打开

方法一: 修改子窗体中自动生成的Dispose方法(在Form.Designer.cs文件中) /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> prote

retain和strong、assign和weak的区别

IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样. (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数+1 copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1 如果为0释放内存 autorelease 对象引用计数-1 如果为0不马上释

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

IOS内存管理retain,assign,copy,strong,weak IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样. (一般情况下: 后面会讨论例外情况)alloc 对象分配后引用计数为1retain 对象的引用计数+1copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1 如果为