【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

【OC语法快览】四、基础内存管理,布布扣,bubuko.com

时间: 2024-10-11 04:36:03

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

【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 autorel

【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语法快览】二、存取方法

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语法快览】五、设计类接口

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 and

【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基础 内存管理

OC基础  内存管理 我们所了解的c语言内存管理,如下: (1)c语言的内存分配:char *p = (char*)malloc(100*sizeof(char)); (2)c语言的内存释放:free(p); c语言内存管理存在的缺陷: (1)不释放就会造成内存泄露. (2)多次释放就会造成崩溃. (3)大型项目中多人对一块内存进行操作时,不能释放内存,因为不知道别人是否还在使用. oc语言的内存管理 1.内存管理 (1)引用计数. (2)内存管理的黄金法则:谁创建谁释放. 让我们来看一下测试例

cocos2dx 3.1从零学习(四)——内存管理(错误案例分析)

本篇内容文字比较较多,但是这些都是建立在前面三章写代码特别是传值的时候崩溃的基础上的.可能表达的跟正确的机制有出入,还请指正. 如果有不理解的可以联系我,大家可以讨论一下,共同学习. 首先明确一个事实,retain和release是一一对应的,跟new和delete一样. 1.引用计数retain release 这里请参考一下引用计数的书籍,肯定说的比我讲的详细. 简单一点理解就是,对new的指针加一个计数器,每引用一次这块内存,计数就加1.在析构的时候减1,如果等于0的时候就delete这个

Linux基础-----内存管理

free -m 查看内存大小 Mem:物理内存统计 total 物理内存大小 used  以使用内存(包含buffers;bached) free  空闲内存 shared 共享内存 buffers 缓冲(用于写操作) cached  缓存(用于读操作) -+ buffers/cached used (不包含buffers和cached;实际内存使用量) free  (包含buffers和cached;实际空闲内存) 根据以上分析,可以得出一下结论: 1.  实际可用内存大小: Free= Fr

iOS基础 ----- 内存管理

Objective-C 的内存管理方式有引用计数机制,垃圾回收机制,自动释放池.有alloc,就有释放.iOS应?程序出现Crash(闪退),90%的原因是因为内存问 题.在?个拥有数?个甚?是上百个类的?程?,查找内存问 题极其困难,学会内存管理,能帮我们减少出错的?率.内存问题体现在两个??:内存溢出.野指针异常. 引用计数器 在Xcode4.2及之后的版本中由于引入了ARC(Automatic Reference Counting)机制,程序编译时Xcode可以自动给你的代码添加内存释放代