`
javasogo
  • 浏览: 1835220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现

 
阅读更多

版权声明

此文版权归作者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实际上是gettersetter,针对有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

分享到:
评论

相关推荐

    iPhone Mac Objective-C内存管理教程和原理剖析

    //...} // obj1 会被自动释放,因为它是自动释放池内的对象```了解了这些基本概念后,你就能更好地理解 Objective-C 的内存管理机制,避免内存泄漏和意外崩溃。实践中,掌握好这些原则并结合 Xcode 的内存分析工具...

    iPhoneMac_Objective-C内存管理教程和原理剖析.pdf

    ### Objective-C内存管理教程和原理剖析 #### 一、前言 Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 开发中。由于 Objective-C 的内存管理机制与现代高级语言如 Java 或 .Net 的自动垃圾...

    Objective-C内存管理教程和原理剖析

    Objective-C的内存管理机制是基于手动管理的,与.NET和Java的自动垃圾回收机制不同。在Objective-C中,对象在堆上创建,并需要一个指针来保持对其的引用。例如,`ClassA *obj1 = [[ClassA alloc] init];` 这句代码...

    Objective-C基础教程(入门教程).pdf

    综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...

    《深入浅出发Objective-C》 内存管理.pdf

    Objective-C的内存管理也有类似的两种模式,分别是手动管理内存和自动管理内存。 手动管理内存的模式要求开发者亲自分配(alloc)和释放(release)内存,这就像在家做饭后的清理一样。而在Objective-C中,使用...

    Objective-C基础教程源代码 Learn objective-C on the Mac Mark Dalrymple著书

    6. **内存管理**:在Objective-C的早期版本中,手动内存管理是必需的,涉及引用计数(retain, release, autorelease)。现代Objective-C使用ARC(Automatic Reference Counting),自动管理内存,但仍需理解其工作...

    Objective-C

    在Objective-C的内存管理中,Objective-C引入了引用计数(Reference Counting)和ARC(Automatic Reference Counting)。引用计数是通过`retain`、`release`和`autorelease`来管理对象生命周期的,而ARC则是编译器...

    Objective-C 2.0之前需要了解的:关于Obj-C内存管理的规则

    理解Objective-C 2.0之前版本的内存管理规则对于深入理解Objective-C语言本身及其背后的原理至关重要。 #### 内存管理基本概念 在Objective-C 2.0之前,内存管理主要依赖于引用计数(reference counting)。每个...

    objective—c内存管理教程和原理

    ### Objective-C内存管理教程和原理 #### 前言 Objective-C作为一种面向对象的语言,在苹果的iOS和OS X开发环境中占据着重要的地位。其内存管理机制对于开发者来说至关重要,不仅影响到程序的性能,还直接影响到...

    objective-c内存管理

    ### Objective-C内存管理详解 #### 一、基本概念与...通过上述对Objective-C内存管理机制的基本原理和实践技巧的介绍,相信初学者可以更好地理解和掌握Objective-C的内存管理机制,从而编写出更加健壮和高效的代码。

    Objective-C语言教程与案例.zip

    2. **语法结构**:Objective-C的语法有其独特性,比如它的方法定义和调用方式,以及在C语言基础上添加的“@”符号,如@property和@synthesize关键字。文档可能详细解释了这些语法元素的使用。 3. **Foundation框架*...

    是一个较为详细的Objective-C语言教程.docx

    Objective-C使用引用计数的方式进行内存管理。例如: ```objective-c NSObject *object = [[NSObject alloc] init]; [object retain]; // 增加引用计数 [object release]; // 减少引用计数 ``` 通过`retain`和`...

    Objective-C培训教程

    Objective-C是一种面向对象的编程语言,它是C语言的一个超集,并且是用于Mac OS和iOS应用开发的主要语言。它具有动态绑定、内存管理、面向对象的特性,允许开发者编写高效和可重用的代码。 第一章程序整体语法结构...

    Objective-C内存管理课件.pdf

    在Objective-C中,内存管理主要依赖于两个基本的操作:retain(保留)和release(释放)。当一个对象被retain后,其引用计数增加,表明有更多的代码在使用这个对象。而release操作则减少对象的引用计数。当对象的...

    Objective-C经典入门源代码

    Objective-C是在C语言的基础上扩展的,因此,它继承了C的语法特性,如变量声明、控制结构(如if-else、for、while)、函数等。同时,它引入了消息传递机制,这是面向对象编程的核心。在Objective-C中,对象通过发送...

    objective-c基础开发教程源代码

    在Objective-C中,我们使用`@interface`和`@implementation`关键字来声明和实现类。 - 对象是类的实例,通过`alloc`和`init`方法创建。 3. **消息传递**: - Objective-C中的方法调用实质上是向对象发送消息。...

    objective-c英文教程

    1. **Garbage Collection(垃圾回收)**:虽然不是默认启用,但 Objective-C 2.0 支持垃圾回收机制,这可以极大地简化内存管理的工作。 2. **Block Support(块支持)**:块是一种类似于匿名函数的概念,可以在...

    Objective-C2.0程序设计习题官方答案

    Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...

    Objective-C教程

    ### Objective-C教程知识点详解 #### 一、Objective-C简介与特性 ##### 1.1 定义与背景 Objective-C是一种面向对象的编程语言,它是在C语言的基础上扩展而成的,主要应用于苹果的操作系统(如iOS和macOS)的软件...

    objective-c 内存管理Demo

    在Objective-C中,了解并正确使用这些内存管理方法至关重要,因为错误的内存管理可能导致内存泄漏或过早释放,影响应用的性能和稳定性。随着ARC的引入,程序员需要关注的内存管理细节减少,但理解这些基本概念仍然是...

Global site tag (gtag.js) - Google Analytics