小编Tam*_*ese的帖子

在非ARC项目中释放对象,对象在ARC库中声明

那么我正在研究一个非ARC项目,但是使用了使用ARC编写的Philipp Kyeck的socketio库.我正在使用教程中介绍的方法合并非ARC项目和ARC库.

在我的ViewController文件中,我正在使用初始化套接字

 SockIO *chatSockIO = [[SocketIO alloc] initWithDelegate:self];
Run Code Online (Sandbox Code Playgroud)

当我需要断开时,我打电话

[chatSockIO disconnect];
Run Code Online (Sandbox Code Playgroud)

这会导致socketIODidDisconnect委托方法触发.

- (void) socketIODidDisconnect:(SocketIO *)socket{
   [chatSockIO release]; ==> is this call needed?
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是关于这条线[chatSockIO release].我们是否需要释放一个本身在ARC模式下定义但在非ARC项目中使用的对象?

现在,当我尝试发布时,我得到了一个例外

-[SocketIO retain]: message sent to deallocated instance 0x6fec370
Run Code Online (Sandbox Code Playgroud)

但是当我注释掉那一行时,我的内存泄漏和dealloc在我的库对象中根本没有被调用

赏金时间!!

忘记我提到的库,崩溃我的代码和泄漏.. 在非ARC项目中使用使用ARC方法定义的对象时的常规做法是什么.我应该只分配它,还是应该在使用后分配和释放它?

编辑:更多信息.

我在崩溃时运行zombie instrument,这就是它所说的..它显示了对alloc和release函数的调用.

#   Address     Category    Event Type  RefCt   Timestamp       Size    Responsible Library     Responsible Caller
0   0x72d5da0   SocketIO    Malloc      1       00:09.700.274   64      MyProject           -[MyViewController sendRequestForSocketIOPush]
1   0x72d5da0   SocketIO    Retain      2       00:09.700.317   0 …
Run Code Online (Sandbox Code Playgroud)

iphone release ios automatic-ref-counting

6
推荐指数
1
解决办法
1946
查看次数

检查"NeXT/Apple typedstream"版本4(NSArchiver)类型的文件

对于数据恢复程序,我需要能够从NSArchiver编写的文件中提取值+类型,而无需访问Apple的CF/NS框架.

OS X file命令报告以下文件:

NeXT/Apple typedstream data, little endian, version 4, system 1000
Run Code Online (Sandbox Code Playgroud)

是否有关于如何编码这些文件的文档,或者是否有人提出可以解析它们的代码?

以下是此类数据的示例(也可:可下载):

04 0B 73 74 72 65 61 6D 74 79 70 65 64 81 E8 03  ..streamtyped...
84 01 40 84 84 84 12 4E 53 41 74 74 72 69 62 75  ..@....NSAttribu
74 65 64 53 74 72 69 6E 67 00 84 84 08 4E 53 4F  tedString....NSO
62 6A 65 63 74 00 85 92 84 84 84 …
Run Code Online (Sandbox Code Playgroud)

macos objective-c nscoding ios nsarchiving

6
推荐指数
2
解决办法
1493
查看次数