ios drawViewHierarchyInRect崩溃EXC_BREAKPOINT UNKNOWN

时间:2014-02-12 08:33:15

标签: ios ios7

我的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]

2 个答案:

答案 0 :(得分:4)

当目标视图不可见时(我没有有效的超视图和窗口),我使用相同的API崩溃。

如果self.superview或self.window为nil,我没有调用drawViewHierarchyInRect来解决这个问题。

答案 1 :(得分:0)

如果您的UIView的高度几乎为零(例如0.1),drawViewHierarchyInRect: afterScreenUpdates:将崩溃。所以在打电话之前检查尺寸。