`

C++ release retain代码

 
阅读更多

 

class CC_DLL CCObject : public CCCopying
{
protected:
	// object id
    unsigned int		m_uID;
	// count of refrence
	unsigned int		m_uReference;
	// is the object autoreleased
	bool		m_bManaged;		
public:
	CCObject(void);
	virtual ~CCObject(void);
    
	virtual void release(void);
	virtual void retain(void);
	CCObject* autorelease(void);
	CCObject* copy(void);
	bool isSingleRefrence(void);
	unsigned int retainCount(void);
	bool isEqual(const CCObject* pObject);

	friend class CCAutoreleasePool;
};

 

 

void CCObject::release(void)
{
	assert(m_uReference > 0);
	--m_uReference;

	if (m_uReference == 0)
	{
		delete this;
	}
}

void CCObject::retain(void)
{
	assert(m_uReference > 0);

	++m_uReference;
}

 

分享到:
评论

相关推荐

    From C++ to Objective-C

    内存管理方面,Objective-C使用引用计数(retain/release)机制,与C++中的析构函数和new/delete操作符有所不同,开发者需要熟悉retain和release来管理对象的生命周期。 总的来说,从C++到Objective-C的转型涉及...

    From C+++ To Object

    3. **内存管理**:在Objective-C中,内存管理主要通过引用计数(Retain/Release)机制来实现,直到后来引入ARC(Automatic Reference Counting)自动管理内存,简化了开发者的工作。而在C++中,内存管理通常由程序员...

    从C++到 Objective-c

    - **Objective-C** 使用引用计数的方式来管理内存,即通过`retain`和`release`方法手动控制对象的生命周期。 - **C++** 支持多种内存管理方式,包括智能指针等现代C++标准库中的自动内存管理机制。 ##### 4. 类的...

    C++基础入门教程(五):new和delete

    在C++中,`retain` 和 `release` 是Objective-C中的概念,但在Cocos2d-x这样的C++库中,它们用于实现类似智能指针的自动内存管理。Cocos2d-x的对象通常通过`create`函数创建,这些函数会自动处理内存分配和释放。`...

    cocos2dx3.2关于自动释放池的demon源代码

    - 虽然自动释放池简化了内存管理,但过度依赖`autorelease`可能导致内存占用过高,因此应合理使用`release`、`retain`等方法来平衡内存的使用。 - 在循环体内创建大量临时对象时,考虑使用局部的自动释放池来提升...

    iOS 面试题

    1.关键字 retain 和 release 的 功能 retain 是对oc对象计数器+1 release是对oc对象计数器-1 减到0就自动调用oc对象的dealloc函数 2.请问关键字 alloc 和 init 的 区别 alloc是分配内存,对象计数器为1 init是...

    iPhoneSDK.pdf

    在编写代码时,确保`retain`和`release`操作在同一代码块内,以保持内存管理的平衡。例如,创建并赋值一个NSString对象: ```objc NSString *str = [[NSString alloc] init]; self.string = str; [str release]; ``...

    Google Objective-C Style Guide 中文版

    10. 对象所有权:涉及内存管理,包括使用retain、release和autorelease等操作,以及如何在Dealloc方法中处理成员变量。 11. Cocoa与Objective-C特性:这是MacOSX应用开发中使用的重要框架和语言特性,包括Cocoa模式...

    无人永生源代码 v1.003

    You may permanently transfer all of your rights under this EULA, provided (a) you retain no copies, (b) you transfer all of the Software (including all component parts, the media on which the ...

    iOS 5 ARC完全指南

    在ARC出现之前,开发者必须手动管理内存,即在代码中显式调用`retain`、`release`和`autorelease`等方法来控制对象的生命周期。这种方式不仅繁琐,而且容易出错,如常见的内存泄漏和野指针问题。ARC的引入解决了这一...

    Object-C学习大纲.pdf

    - **兼容性**:完全兼容 C 语言,这意味着可以在 Objective-C 代码中混入 C 语言甚至 C++ 代码。 #### 二、开发环境配置 - **操作系统**:Mac OS。 - **IDE**:Xcode。 - **创建项目**: - 选择 Mac OS 下的 ...

    Object-C 经典入门教程

    10. 内存管理:在Objective-C中,内存管理主要通过retain和release来手动控制,以避免内存泄漏。Dealloc方法用于清理对象,而AutoreleasePool用于管理自动释放池,有助于更好地管理内存。 11. Foundation框架类:...

    Coin-3.1.3

    retain-mode, rendering and model manipulation, C++ class library, originally designed by SGI. It quickly became the de facto standard graphics library for 3D visualization and visual simulation ...

    ios开发面试题

    1. **iOS内存管理模型**:iOS采用的是ARC(Automatic Reference Counting)自动引用计数模型,它简化了内存管理,使得开发者不需要手动编写`retain`、`release`等内存管理代码。 2. **ARC与GC对比**:在OS X 10.8...

Global site tag (gtag.js) - Google Analytics