Program received signal :"SIGKILL"

如果在-(void)dealloc{}方法中,用self.tableVIew=nil清空内存。那么会影响到-(void)viewDidLoad{}方法中的tableView(即[self.view addSubView:tableView]中的tableView),tableView事实上内存已经清空了,地址为:0x0

这个赶脚不对。因为明显就是先执行viewDidLoad方法,当退出该界面时才执行dealloc,所以感觉这个解释不能接受。所以这篇文章仅供大家参考,提供思路。

路过的大大们如果有神马高见,欢迎留言

发生Thread 1:Program received signal:"SIGKILL". 错误时内存管理不当。

举个例子:

-------------------------------------------------------------

MyViewController.h

@interface MyViewController : UIViewController{

      UITableView *tableView

}

@property (nonatomic,retain) UITableView *tableView;

@end

-----------------------------------------------------------------

MyViewContrller.m

@implementation

@synthesize: tableView

(void)viewDidLoad{

[super viewDidLoad];

tableView=[[UITableView alloc] init];

[self.view addSubView:tableView];

}

 

(void)dealloc{

[tableView release],self.tableView=nil;

[super dealloc];

}

------------------------------------------------------------------

如果你开了NSZombieEnabled,会有Thread 1:Program received signal:"SIGKILL".错误。

办法就是去掉self.

细看-(void)viewDidLoad{}和- (void)dealloc{}方法,里面都有tableView。

如果在-(void)dealloc{}方法中,用self.tableVIew=nil清空内存。

那么会影响到-(void)viewDidLoad{}方法中的tableView(即[self.view addSubView:tableView]中的tableView),tableView事实上内存已经清空了,地址为:0x0。

虽然retainCount≠0,但当执行-(void)dealloc{}方法中的[super dealloc]时,release或清空地址为:0x0的subView:tableView 就发生错误。

所以要去掉self.,在-(void)dealloc{}方法中,用tableVIew=nil清空内存,就不会影响到-(void)viewDidLoad{}中的tableView。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值