Objective-c与c++混编中的objc对象内存管理

Objective-C的语法和内存管理对某些开发者来说是个挑战,特别是当需要高性能时,Objective-C++成为了选择。然而,将objc对象放入C++ STL容器时,需要手动管理内存。本文提出了一种解决方案,即创建一个名为ns_handle的C++类来封装objc对象,通过不同的内存管理策略(retain, copy, assign)来简化内存操作,避免内存泄漏。示例代码展示了如何使用ns_handle类来创建和管理Objective-C对象。" 80900561,7453957,Qt编译与配置Oracle驱动,"['Qt开发', '数据库连接', 'Oracle OCI', 'C++编程']
摘要由CSDN通过智能技术生成

Objective-c怪异的语法让很多其它平台转向iphone的开发者感到头疼不已,同时objective-c的类库虽然提供了像脚本一样容易使用的NSArrayNSDictionary容器,但是在一些对性能要求比较场合下这两个容器明显不给力,很多人选择objective-c++这种混编模式来开发,从而使用强大的C++ STL等类库。但是objc的对象内存管理相对而言比c++对象麻烦很多,比如将objc的对象直接保存在STL容器中时,默认的并不会对该对象进行任何管理,我们需要手动的retainrelease。对此,可以写一个保存objective-c对象的c++句柄类,利用c++的一些特性来省去这些内存操作,从而避免错误的产生。

个人写的ns_handle类参考代码如下。

ns_handle.h

/*

 *  ns_handle.h

 *  ns_handle

 *

 *  Created by leondun on 11-3-23.

 *  Copyright 2011 leondun. All rights reserved.

 *

 */

 

//===================================

 

class ns_handle

{

private:

      typedef enum

      {

            _retain,

            _assign,

            _copy,

      }_mem_type;

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值