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

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
    评论
### 回答1: 这个错误提示是说,命令行选项“-wstrict-prototypes”适用于C和Objective-C语言,但不适用于C++语言。这可能是因为C++语言已经有了更严格的类型检查,不需要这个选项来强制执行函数原型的严格性。如果你在C++代码时遇到了这个错误,可以尝试去掉这个选项,或者将代码改写为符合C++标准的形式。 ### 回答2: 这个错误提示是关于译器选项的一个警告,指出在C语言使用了一个针对C和Objective-C均可用的译选项“-wstrict-prototypes”,但实际上这个选项只适用于Objective-CC++语言,而不适用于C语言。 在C,函数原型的严格检查通常是默认开启的,因此使用“-wstrict-prototypes”选项并不是必须的。但在Objective-CC++,函数原型的检查可能较为松散,使用这个选项可以让译器更严格地检查函数参数的类型和数量,从而避免一些类型错误和译问题。 因此,如果你在译C语言程序时遇到了这个错误提示,可以考虑将这个选项从译命令移除,或者尝试使用其他适用于C语言的译选项。同时,如果你在使用其他语言写程序时想要进行函数原型的严格检查,可以考虑使用类似的译选项来提高程序的健壮性和可靠性。 ### 回答3: 这条命令行选项“-wstrict-prototypes”在C和Objective-C有效,但在C++无效。在C和Objective-C,这个选项可以告诉译器检查函数的参数类型是否与声明指定的参数类型相同。这是一个严格的类型检查,可以避免一些潜在的问题。然而,在C++,这个选项是无效的,因为C++具有更强的类型检查机制,不需要使用这种选项。 在C和Objective-C使用-wstrict-prototypes可以提高代码的质量,因为它可以捕获一些译时的错误,从而避免在运行时发生意想不到的错误。但是,一些老的代码可能没有声明函数的参数类型,如果在译时启用-wstrict-prototypes选项,可能会发生一些警告或者错误。因此,在新的代码,应该遵循严格的函数参数声明规则,并且在使用-wstrict-prototypes选项时,需要注意对应的译器环境,避免不必要的问题。 总之,这个命令行选项提醒了我们应该更加注意函数参数的声明,在写高质量的C和Objective-C代码时,应该始终使用。但是,在C++,在不同的译器环境下,也需要谨慎考虑是否使用这个选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duboleon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值