iPhone - 应用DidBecomeActive之间的ArrayList:和运行循环开始?
-
20-09-2019 - |
题
编辑:我停留在单个呼叫到手动保留阵列初始化后立即,以及固定它。杜尔。感谢。
我保持一个NSMutableArray在一个UIScrollView子类,并且我添加到它一个UIImageView子类的实例,因为每个被添加作为一个子视图。它需要一个可变的数组,我打算重新安排他们的阵列最终在顺序;这个错误发生之前,我甚至尝试这样做。我用NSLogs表明该阵列具有计数10,直到并包括applicationDidBecomeActive:叫我的AppDelegate,并增加了一个定时器火在运行循环的每个0.001S。它触发第一次,它无法找到数组了!我很迷茫,一直在试图跟踪下来了几个小时。
计时器的正常工作(即,当printCount:不访问阵列,它的优良),它只有当我尝试那里,它打破访问阵列。定期调用printCount:下面的工作,但在第一时间定时器触发我怎么可能在这两个调用printCount之间发生的事情:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSTimer *timer = [[NSTimer scheduledTimerWithTimeInterval:0.001f
target:[viewController view]
selector:@selector(printCount)
userInfo:nil
repeats:YES]
retain];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[[viewController view] printCount];
}
我已经通过与调试程序被无休无止地踩着。该阵列是正确直到通过这个点,它的内存地址是相同的内容被改变甚至后。但是,只有在它之后的对象 - 它的10种元素得到由单一UITouchData实例代替。不知道它来自何方。我的事件处理方法都没有试图重新分配阵列或改变它。任何想法可能是想错了?我完全迷惑。
解决方案
你-retain
阵列?
其他提示
也许你的对象被释放?如果你保留它会发生什么。这是否工作,或者你只是得到了内存泄漏?
其10个元素是不是被取代 单UITouchData实例。不知道 它来自何方。
时它总是一个UITouchData实例?总是? - 因为,那似乎是一个死赠品(如果它不一样的每次)内存问题
我停留在一个呼叫进行初始化之后立即保留至阵列,并固定它。 DUR。
感谢您的建议。由于通常有这样的问题发生,这是非常简单的,终于让步,并要求帮助触发的解决方案,让我觉得自己很傻。 :d
是否视图初始化并释放数组?结果
你确定了一个NSView没有释放之间?点击
您可以检查是否[viewController view]
(== printCount
内个体经营)的内存地址是每一个你的计时器调用printCount
时间相同。