是否有必要在iPhone中发布NSInteger?

时间:2009-07-08 13:16:16

标签: iphone objective-c memory-management

我得到这个错误有人知道吗??? 2009-07-08 18:42:36.778 FlashCards [1297:20b]类别Id = 1 FlashCards(1297,0xa0690fa0)malloc: *对象0x4fd78a0的错误:释放的指针未分配 对象0x4fdc200的FlashCards(1297,0xa0690fa0)malloc:* 错误:双倍免费 ***在malloc_error_break中设置断点以进行调试

3 个答案:

答案 0 :(得分:16)

不,NSInteger不是对象;它只是int(对于32位应用程序)或long(对于64位应用程序)的typedef:

#if __LP64__
typedef long NSInteger;
#else
typedef int NSInteger;
endif

答案 1 :(得分:3)

NSInteger是基本类型的typedef,它不是可以响应retain或release等方法的对象。尽管它的命名类似于像NSNumber或NSValue这样的Cocoa类,但实际上它的处理方式与int,float等相同。

答案 2 :(得分:0)

错误消息为您提供了如何调试此问题的良好提示:在malloc_error_break处设置断点。在Xcode中,打开断点窗口(选项-cmd-B)。在显示“双击符号”的字段中,输入malloc_error_break。在调试器中重新运行您的应用程序(从“运行”菜单中选择“调试”)。调试器将在您报告的错误点停止。我会检查那一点的堆栈跟踪,找到你已经加倍释放这段记忆的地方。