【OC语法快览】四、基础内存管理

Basic Memory Management                                                       

   基础内存管理

If you're writing an application for Mac OS X, you have the option to enable garbage collection. In general, this means that you don't have to think about
memory management until you get to more complex cases. 

如果你正在写运行在Mac OS X上的程序,你可以选择开启垃圾回收功能。除非你遇到更复杂的情况,这样你就不用考虑内存管理了。

However, you may not always be working with an environment that supports garbage collection. In that case, you need to know a few basic concepts. 

但是,你的工作环境不一定都支持垃圾回收。这种情况下,你需要知道一些基本内存管理的概念。

If you create an object using the manual alloc style, you need to releasethe object later. You should not manually release an autoreleased object because your application will crash if you do. 

如果使用人工alloc方式创建实例对象,稍后需要释放掉它。不应该人工释放一个可以自动释放的对象,否则将导致程序奔溃。

Here are two examples:

这有两个例子: 

// string1 will be released automatically
NSString* string1 = [NSString string];

// must release this when done
NSString* string2 = [[NSString alloc] init];
[string2 release];

For this tutorial, you can assume that an automatic object will go away at the end of the current function. 

在这份材料中,你可以假设,一个自动释放的实例对象将会在当前函数结束后自动消失。

There's more to learn about memory management, but it will make more sense after we look at a few more concepts.

还有很多需要学习的内存管理知识,但是在我们掌握更多概念之后,学习起来更有效果。

原文:learn_objective_C part
4

时间: 2024-10-22 23:59:37

【OC语法快览】四、基础内存管理的相关文章

【OC语法快览】二、存取方法

Accessors   存取方法 All instance variables are private in Objective-C by default, so you should use accessors to get and set values in most cases. There are two syntaxes. This is the traditional 1.x syntax: OC中所有的实例变量默认是私有的,所以多数情况下你应该使用访问器来获得和设置实例变量的值.访

【OC语法快览】六、类实现

Class Implementation      类实现 Let's create an implementation, starting with the getters: 接下来创建一个类实现,从访问器开始: #import "Photo.h" @implementation Photo - (NSString*) caption { return caption; } - (NSString*) photographer { return photographer; } @en

【OC语法快览】五、设计类接口

Designing a Class Interface       设计类接口 The Objective-C syntax for creating a class is very simple. It typically comes in two parts.  创建类的语法是很简单的,通常包括两部分. The class interface is usually stored in the ClassName.h file, and defines instance variables a

【OC语法快览】三、创建实例对象

Creating Objects        创建对象 There are two main ways to create an object. The first is the one you saw before: 创建对象主要有两种方法.第一种如下:   NSString* myString = [NSString string]; This is the more convenient automatic style. In this case, you are creating an

【OC语法快览】一、方法调用

调用方法 [object method]; [object methodWithInput:input]; output = [object methodWithOutput]; output = [object methodWithInputAndOutput:input]; id myObject = [NSString string]; NSString* myString = [NSString string]; 嵌套消息 function1 ( function2() ); [NSSt

OC内存管理

一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等. 管理范围:任何继承NSObject的对象,对其他的基本数据类型无效. 本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对

浅谈OC内存管理

一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等. 管理范围:任何继承NSObject的对象,对其他的基本数据类型无效. 本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对

objective-c-oc内存管理基础问题@property

问题描述 oc内存管理基础问题@property 对象alloc 以后 计数应该是1 赋值给retain 类型 计数应该+1 所以计数是2 但是为什么都是1 ,请哪个前辈帮忙解释下 解决方案 写属性的时候(nonatomic, retain)中的retain 只会在stter方法里有效,也就是说只会在setter里给它retain一次,你这是自定义的方法,而且也没有 _myobject = [testjob retain]; 他当让不会+1了 解决方案二: http://m.blog.csdn.

Linux操作系统基础(四)保护模式内存管理(2)【转】

转自:http://blog.csdn.net/rosetta/article/details/8570681 Linux操作系统基础(四)保护模式内存管理(2) 转载请注明出处:http://blog.csdn.net/rosetta           本节主要讲:保护模式内存管理相关的物理地址空间,逻辑和线性地址空间,段选择符,段寄存器,段描述符. 物理地址空间          保护模式下,IA-32架构提供了一个4GBytes(2^32bytes)正常大小的物理寻址空间.处理器可以使用