现在的位置: 首页 > 综合 > 正文

iphone 委托导致内存泄露

2013年01月15日 ⁄ 综合 ⁄ 共 1218字 ⁄ 字号 评论关闭
 A:  9:48:15
程序在运行中,突然报这个错误。-[IPhoneConnectTestViewController service:didFailWithError:]: message sent to deallocated instance 0x10ffaf10
类似着这种错误你有碰过吗?
B  9:49:37
内存泄漏
0x10ffaf10 这个内存块泄漏了
B:  9:50:40
已经释放了
你把消息发送到已经释放的内存块
估计是啥变量被你提前释放了
A:  9:54:20
恩,灰常有 可能。
这是我使用委托的时候,发生的,而且是随机的。
无法确定的错误。
B:  9:55:38
哈哈,
我知道了
B:  9:57:06
你在哪个界面使用委托,出这个界面的时候在delloc要把delege =nil;置空啊。要不委托还是会发消息,然后哪个类被释放了就收不到了,然后就死机了。
A:  9:58:20
以后你在哪个类用委托,释放的时候要把委托置空,除非是单例,一直存在。否则都要这样处理,要不会出问题
知道不?
A:  9:59:17
恩,
A:  10:00:21
- (void)connection:(NSURLConnection *)_connection didFailWithError:(NSError *)error
{
self.connection = nil;
[delegate service: self didFailWithError: error];
}

这是那个委托的调用方法。
发现这个.m文件没有delloc这个方法
B : 10:02:13
那你自己加上去啊,应该会调用到的。你加个断点看看
A:  10:03:30
恩,好的。哈。
B : 10:03:32
不是在这里把
A : 10:03:43
??
要不在哪里

B:  10:04:05
应该是在委托的那个类做处理的把
[delegate service: self didFailWithError: error];你这边调用的是哪个类的函数,应该就是把那里的委托置空的
B : 10:05:14
不是在发委托消息的那个类处理的,
比如你在那个委托类实现;
A: 10:06:51
是不是在service: self didFailWithError: error这个函数实现的那个类
B:  10:07:15
urlconnect *connect = [urlconnect alloc] init];
connect.delegate = self;
然后你在delloc里面就:connect.delegate = nil;
恩啊。
B:  10:08:29
在哪个类实例化urlconnect,就在哪个类把委托置空。
A:  10:09:12
恩,好的,
哈哈,
明白了。
B : 10:11:05
恩。
A:  10:14:25
看来有关内存泄露的模板我还得好好看下。
B : 10:16:22
还是得遇到问题,解决才会比较知道,我上次也遇到了,所以就知道了。
多遇到问题,就懂的越多

抱歉!评论已关闭.