我遇到了一个奇怪的错误。我们正在使用带有 ARC 的 iOS 5。当 NSZombiesEnabled 设置为 true 并且应用程序插入调试器时,我们会收到此错误(它也正常发生,但不那么一致)
2012-07-04 11:25:17.161 Trivial[624:707] -[vcCurrentGames gamesLoaded:] [Line 284] Found 62 games that are my turn.
2012-07-04 11:25:17.162 Trivial[624:707] -[vcCurrentGames gamesLoaded:] [Line 285] Found 26 games that are their turn.
2012-07-04 11:25:17.169 Trivial[624:707] -[vcCurrentGames tableView:heightForHeaderInSection:] [Line 409] Height 1: 29
2012-07-04 11:25:17.171 Trivial[624:707] *** -[vcDashboard retain]: message sent to deallocated instance 0xf62c3c0
我们不会在任何地方保留仪表板(ARC 不允许保留)。这仅在应用程序从后台加载后才会发生。vcCurrentGames 实际上是仪表板上的一个 UITableView。这让我更加奇怪,因为如果仪表板被释放,那么为什么它会加载 UITableView?
我已经阅读了一些关于此的内容。仪表板在应用程序委托中定义为一个属性:
@property (nonatomic, strong) vcDashboard *vDashboard;
我试图让这个变弱,以便它会归零,但这也不起作用。有人可以告诉我为什么它被解除分配,或者为什么它在解除分配后试图保留 vcDashboard?
在应用程序委托中,我这样声明:
UIViewController *viewController = [[vcDashboard alloc] initWithNibName:@"vcDashboard" bundle:nil];
self.vDashboard = (vcDashboard *)viewController;