【发布时间】:2012-08-22 14:35:46
【问题描述】:
在我的游戏中,我使用以下代码以编程方式分配了一些 UIImageView:
blocks[1] = [[UIImageView alloc] initWithFrame: CGRectMake(200, y1, kBlockHeight, kBlockHeight)];
blocks[2] = [[UIImageView alloc] initWithFrame: CGRectMake(320, y2, kBlockHeight, kBlockHeight)];
blocks[3] = [[UIImageView alloc] initWithFrame: CGRectMake(440, y3, kBlockHeight, kBlockHeight)];
blocks[4] = [[UIImageView alloc] initWithFrame: CGRectMake(560, y4, kBlockHeight, kBlockHeight)];
blocks[1].backgroundColor = [UIColor blackColor];
blocks[2].backgroundColor = [UIColor blackColor];
blocks[3].backgroundColor = [UIColor blackColor];
blocks[4].backgroundColor = [UIColor blackColor];
[self.view addSubview: blocks[1]];
[self.view addSubview: blocks[2]];
[self.view addSubview: blocks[3]];
[self.view addSubview: blocks[4]];
它工作正常,但是当我尝试摆脱对象并重新启动时,
for (int i = 1; i<= 4; i++) {
blocks[i] = nil;
//ARC won't let me call [blocks[i] release];
NSLog(@"releasing blocks");
}
它们仍然停留在屏幕上。它们不与任何东西交互,但仍保持在屏幕上绘制。为什么会这样,我应该怎么做才能摆脱这些物体?
【问题讨论】:
-
不是您问题的答案,但您可能想了解IBOutletCollection
-
我不想使用 IBOutletCollection,这样我仍然可以支持 iOS 3。
-
你可能不需要支持 iOS 3,它不再被广泛使用,最新的开发工具甚至不支持针对低版本的 iOS。如果您像问题所示那样使用 ARC,那么您的应用程序无论如何都不会在 iOS 3 上运行。
-
你的数字功课做完了吗?随着 iOS6 即将发布,我看不出支持 iOS3 的理由。您将花费更多时间开发兼容性代码而不是它产生的利润。而且您无论如何都在使用ARC...
-
@Jim 你从来没有问过 1 个问题?!?
标签: objective-c ios interface release null