【发布时间】:2011-11-05 21:59:12
【问题描述】:
我正在创建一个以屏幕大小的 CGRect 开头的应用程序。当用户触摸 CGRect 内部时,它被切割成两个 CGRect。当我触摸创建的新 CGRect 内部时,我可以正常工作,但是当我触摸不是最新添加到 rectangleArray 的 CGRect 内部时,应用程序崩溃并显示 sigabrt。
这里是touchesBegan中的代码,blockPoint是屏幕被触摸的点
for (NSValue *val in rectangleArray){
CGRect rectangle = [val CGRectValue];
if (CGRectContainsPoint(rectangle, blockPoint)) {
CGRect newRectangle;
CGRect addRectangle;
if (!inLandscape) {
newRectangle = CGRectMake(rectangle.origin.x, rectangle.origin.y, rectangle.size.width, blockPoint.y - rectangle.origin.y);
addRectangle = CGRectMake(rectangle.origin.x, blockPoint.y, rectangle.size.width, rectangle.size.height - (blockPoint.y - rectangle.origin.y));
}
else {
newRectangle = CGRectMake(rectangle.origin.x, rectangle.origin.y, blockPoint.x - rectangle.origin.x, rectangle.size.height);
addRectangle = CGRectMake(blockPoint.x, rectangle.origin.y, rectangle.size.width - (blockPoint.x - rectangle.origin.x), rectangle.size.height);
}
[rectangleArray replaceObjectAtIndex:[rectangleArray indexOfObject:val] withObject:[NSValue valueWithCGRect:newRectangle]];
[rectangleArray addObject:[NSValue valueWithCGRect:addRectangle]];
}
}
为什么会崩溃?
【问题讨论】:
-
发生崩溃时,控制台中几乎总是有消息。您应该在帖子中包含这些内容。
标签: ios crash nsmutablearray sigabrt cgrect