我在做绘图应用。跟踪用户手指,我得到CGPoint,我需要检查CGPoint是否在我的多个CGRect中。检查没问题。我的代码是这样的。
[self.inputOptionRects enumerateObjectsUsingBlock:^(NSValue *rectValue, NSUInteger idx, BOOL *stop) {
CGRect keyRect = [rectValue CGRectValue];
CGRect infiniteKeyRect = CGRectMake(CGRectGetMinX(keyRect), 0, CGRectGetWidth(keyRect), NSIntegerMax);
infiniteKeyRect = CGRectInset(infiniteKeyRect, -3, 0);
if (CGRectContainsPoint(infiniteKeyRect, location)) {
selectedInputIndex = idx;
*stop = YES;
}
}];
唯一的问题是,当用户手指移动时,它会产生许多CGPoint(我认为是这样)并且app需要处理这么多次。结果,我的内存使用率急剧上升,应用程序崩溃。有没有更好的方法来处理我的案子?
或者有没有办法在更改cgpoint时进入通知事件并进入其中一个cgrect?如果是这样,我将不需要多次检查。