我的IOS应用程序中有这种随机崩溃,时不时发生。 根本无法复制它,但我有来自用户的数千份崩溃报告。
在调用[UIView drawViewHierarchyInRect:]期间,它与“EXC_BREAKPOINT UNKNOWN”崩溃。
它只发生在IOS7设备上,因为该方法在IOS7之前不可用(因此未被调用)。
有没有人知道如何处理这个问题?任何帮助将不胜感激。
- (UIImage *)imageRepresentation
{
if (![self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
// Disable imageRepresentation on < iOS 7
return nil;
}
UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, [UIScreen mainScreen].scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Crashed: com.apple.main-thread
EXC_BREAKPOINT UNKNOWN at 0x0000defe
raw
0
CoreFoundation
CFRelease + 1131
1
UIKit
-[UIView(Rendering) _imageFromRect:] + 136
2
UIKit
-[UIView(Rendering) _imageFromRect:] + 136
3
UIKit
-[UIView _drawViewHierarchyInRect:] + 174
4
UIKit
-[UIView drawViewHierarchyInRect:afterScreenUpdates:] + 378
5
MyApp
UIView+SSToolkitAdditions.m line 23
-[UIView(SSToolkitAdditions) imageRepresentation]
答案 0 :(得分:4)
当目标视图不可见时(我没有有效的超视图和窗口),我使用相同的API崩溃。
如果self.superview或self.window为nil,我没有调用drawViewHierarchyInRect来解决这个问题。
答案 1 :(得分:0)
如果您的UIView的高度几乎为零(例如0.1),drawViewHierarchyInRect: afterScreenUpdates:
将崩溃。所以在打电话之前检查尺寸。