Posted on 2010-03-08 00:37
Vince Yuan阅读(2426)
评论(0)编辑收藏
版权声明
此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。
版本1.1发表于2010-03-08
三@property (retain)和@synthesize的默认实现
在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么(retain property的默认实现)。property实际上是getter和setter,针对有retain参数的property,背后的实现如下(请参考附件中的memman-getter-setter.m,你会发现,结果和memman-property.m一样):
@interface ClassA : NSObject
{
ClassB *objB;
}
-(ClassB *) getObjB;
-(void) setObjB:(ClassB *) value;
@end
@implementation ClassA
-(ClassB*) getObjB
{
return objB;
}
-(void) setObjB:(ClassB*) value
{
if (objB != value)
{
[objB release];
objB = [value retain];
}
}
在setObjB中,如果新设定的值和原值不同的话,必须要把原值对象release一次,这样才能保证retain count是正确的。
由于我们在class内部retain了一次(虽然是默认实现的),所以我们要在dealloc方法中release这个成员变量。
-(void) dealloc
{
[objB release];
[super dealloc];
}
示例代码文件链接:http://files.cnblogs.com/VinceYuan/objective-c-memman.zip
分享到:
相关推荐
//...} // obj1 会被自动释放,因为它是自动释放池内的对象```了解了这些基本概念后,你就能更好地理解 Objective-C 的内存管理机制,避免内存泄漏和意外崩溃。实践中,掌握好这些原则并结合 Xcode 的内存分析工具...
### Objective-C内存管理教程和原理剖析 #### 一、前言 Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 开发中。由于 Objective-C 的内存管理机制与现代高级语言如 Java 或 .Net 的自动垃圾...
Objective-C的内存管理机制是基于手动管理的,与.NET和Java的自动垃圾回收机制不同。在Objective-C中,对象在堆上创建,并需要一个指针来保持对其的引用。例如,`ClassA *obj1 = [[ClassA alloc] init];` 这句代码...
综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...
Objective-C的内存管理也有类似的两种模式,分别是手动管理内存和自动管理内存。 手动管理内存的模式要求开发者亲自分配(alloc)和释放(release)内存,这就像在家做饭后的清理一样。而在Objective-C中,使用...
6. **内存管理**:在Objective-C的早期版本中,手动内存管理是必需的,涉及引用计数(retain, release, autorelease)。现代Objective-C使用ARC(Automatic Reference Counting),自动管理内存,但仍需理解其工作...
在Objective-C的内存管理中,Objective-C引入了引用计数(Reference Counting)和ARC(Automatic Reference Counting)。引用计数是通过`retain`、`release`和`autorelease`来管理对象生命周期的,而ARC则是编译器...
理解Objective-C 2.0之前版本的内存管理规则对于深入理解Objective-C语言本身及其背后的原理至关重要。 #### 内存管理基本概念 在Objective-C 2.0之前,内存管理主要依赖于引用计数(reference counting)。每个...
### Objective-C内存管理教程和原理 #### 前言 Objective-C作为一种面向对象的语言,在苹果的iOS和OS X开发环境中占据着重要的地位。其内存管理机制对于开发者来说至关重要,不仅影响到程序的性能,还直接影响到...
### Objective-C内存管理详解 #### 一、基本概念与...通过上述对Objective-C内存管理机制的基本原理和实践技巧的介绍,相信初学者可以更好地理解和掌握Objective-C的内存管理机制,从而编写出更加健壮和高效的代码。
2. **语法结构**:Objective-C的语法有其独特性,比如它的方法定义和调用方式,以及在C语言基础上添加的“@”符号,如@property和@synthesize关键字。文档可能详细解释了这些语法元素的使用。 3. **Foundation框架*...
Objective-C使用引用计数的方式进行内存管理。例如: ```objective-c NSObject *object = [[NSObject alloc] init]; [object retain]; // 增加引用计数 [object release]; // 减少引用计数 ``` 通过`retain`和`...
Objective-C是一种面向对象的编程语言,它是C语言的一个超集,并且是用于Mac OS和iOS应用开发的主要语言。它具有动态绑定、内存管理、面向对象的特性,允许开发者编写高效和可重用的代码。 第一章程序整体语法结构...
在Objective-C中,内存管理主要依赖于两个基本的操作:retain(保留)和release(释放)。当一个对象被retain后,其引用计数增加,表明有更多的代码在使用这个对象。而release操作则减少对象的引用计数。当对象的...
Objective-C是在C语言的基础上扩展的,因此,它继承了C的语法特性,如变量声明、控制结构(如if-else、for、while)、函数等。同时,它引入了消息传递机制,这是面向对象编程的核心。在Objective-C中,对象通过发送...
在Objective-C中,我们使用`@interface`和`@implementation`关键字来声明和实现类。 - 对象是类的实例,通过`alloc`和`init`方法创建。 3. **消息传递**: - Objective-C中的方法调用实质上是向对象发送消息。...
1. **Garbage Collection(垃圾回收)**:虽然不是默认启用,但 Objective-C 2.0 支持垃圾回收机制,这可以极大地简化内存管理的工作。 2. **Block Support(块支持)**:块是一种类似于匿名函数的概念,可以在...
Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...
### Objective-C教程知识点详解 #### 一、Objective-C简介与特性 ##### 1.1 定义与背景 Objective-C是一种面向对象的编程语言,它是在C语言的基础上扩展而成的,主要应用于苹果的操作系统(如iOS和macOS)的软件...
在Objective-C中,了解并正确使用这些内存管理方法至关重要,因为错误的内存管理可能导致内存泄漏或过早释放,影响应用的性能和稳定性。随着ARC的引入,程序员需要关注的内存管理细节减少,但理解这些基本概念仍然是...