有更有效的方法吗?

时间:2011-09-13 00:42:44

标签: ios performance

我正在添加一个XIB作为子视图,仅供临时使用。它是全屏的,我认为我的代码效率低下。我知道我在这里做错了什么。我的子视图在控制台中收到奇怪的崩溃和警告消息。我知道子视图中的代码没有任何问题,因为我之前已经对它进行了不同的测试。

我在这里做错了吗?

self.sp = [[Score alloc] initWithNibName:@"Score" bundle:nil];
    [self.view addSubview:self.sp.view];
    [self.sp.view setFrame:CGRectMake(0, 485, 320, 480)];
    [self.sp.view setBackgroundColor:[UIColor clearColor]];
    [UIView animateWithDuration:1
                          delay:0 
                        options:UIViewAnimationOptionCurveLinear 
                     animations:^{
                         [self.sp.view setCenter:self.view.center];
                     } 
                     completion:nil];

我认为这与我的案例中释放'sp'有关。我该如何正确发布?我在视图控制器中忽略了该视图,而不是在此视图中。

谢谢!

1 个答案:

答案 0 :(得分:1)

你肯定是在泄漏Score个对象。

当你alloc init一个对象时,它返回一个保留计数为1的对象,你永远不会release。更重要的是,如果您的sp属性属于retain属性,则会进一步将保留计数增加1,同样,您需要将其与release调用进行平衡。

假设spretain属性,请尝试以下操作:

self.sp = [[[Score alloc] initWithNibName:@"Score" bundle:nil] autorelease];

并确保您的dealloc方法也release sp