replaceObjectAtIndex:withObject 这个方法也会把参数的引用记数加1

还在搞我的Army项目,弄了太长时间了,但还是没啥进展,闲话不说了,今天在看scrollview实现延时加载技术的 PageControl demo时,注意到一个问题,这里记一下:

MyViewController *controller = [viewControllersobjectAtIndex:page];

    if ((NSNull *)controller == [NSNullnull])

    {

        controller = [[MyViewControlleralloc] initWithPageNumber:page];

        NSLog(@"controller retaincount (ONE %d)",[controllerretainCount]);

        [viewControllers replaceObjectAtIndex:page withObject:controller];

        NSLog(@"controller retaincount (TWO %d)",[controllerretainCount]);

        [controller release];

        NSLog(@"controller retaincount (THREE %d)",[controllerretainCount]);

    }

    

    // add the controller's view to the scroll view

    if (controller.view.superview ==nil)

    {

        NSLog(@"222loadScrollViewWithPage:page=%d$$$$$$$$$$$$$",page);

        CGRect frame = scrollView.frame;

        frame.origin.x = frame.size.width * page;

        frame.origin.y = 0;

        controller.view.frame = frame;

        [scrollView addSubview:controller.view];

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

疑惑在这一点上:既然controller都已经release了,为什么下边还能调用 addsubview方法,通过打印NSLog才知道问题出在这一点上:

[viewControllers replaceObjectAtIndex:page withObject:controller];

这个函数把controller的retaincount也加 1 了,先记着吧!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值