我有一个核心图形模式,可以在模拟器上完美运行,但它在设备上崩溃了:
void MyDrawColoredPattern4 (void *info, CGContextRef context) {
UIColor* colorClar = [UIColor colorWithRed: 0.57 green: 0.57 blue: 0.57 alpha: 1];
UIColor* colorFosc = [UIColor colorWithRed: 0.15 green: 0.15 blue: 0.15 alpha: 1];
CGColorRef dotColor = colorFosc.CGColor;
CGColorRef shadowColor = colorClar.CGColor;
CGContextMoveToPoint(context, 5, -0.5);
CGContextAddLineToPoint(context, 1.1, 1.75);
CGContextAddLineToPoint(context,1.1, 6.25);
CGContextAddLineToPoint(context,5, 8.5);
CGContextAddLineToPoint(context,8.9, 6.25);
CGContextAddLineToPoint(context,8.9, 1.75);
CGContextClosePath(context);
CGContextMoveToPoint(context,16, 10.5);
CGContextAddLineToPoint(context, 12.1, 12.75);
CGContextAddLineToPoint(context,12.1, 17.25);
CGContextAddLineToPoint(context,16, 19.5);
CGContextAddLineToPoint(context,19.9, 17.25);
CGContextAddLineToPoint(context,19.9, 12.75);
CGContextClosePath(context);
CGContextSetFillColorWithColor(context, dotColor);
CGContextSetShadowWithColor(context, CGSizeMake(1, 1), 2, shadowColor);
CGContextFillPath (context);
}
模式大小为25 * 25,它用drawRect
填充整个矩形。我知道有时需要高要求的图形应用程序会在设备上崩溃并且没有模拟器,但我不确定是否是这种情况。
我创建了一些更简单的模式,它们在模拟器和设备中都可以正常工作。
任何?
编辑:顺便说一句,控制台上没有任何内容,但编辑区内有以下内容:
libobjc.A.dylib`objc_msgSend:
0x37be7f68: teq.w r0, #0
0x37be7f6c: beq 0x37be7faa ; objc_msgSend + 66
0x37be7f6e: push.w {r3, r4}
0x37be7f72: ldr r4, [r0]
0x37be7f74: lsr.w r9, r1, #2
0x37be7f78: ldr r3, [r4, #8] ------------------> this line is highligthed in green.
0x37be7f7a: add.w r3, r3, #8
0x37be7f7e: ldr r12, [r3, #-8]
0x37be7f82: and.w r9, r9, r12
0x37be7f86: ldr.w r4, [r3, r9, lsl #2]
0x37be7f8a: teq.w r4, #0
0x37be7f8e: add.w r9, r9, #1
0x37be7f92: beq 0x37be7fa6 ; objc_msgSend + 62
0x37be7f94: ldr.w r12, [r4]
0x37be7f98: teq.w r1, r12
0x37be7f9c: bne 0x37be817e ; objc_msgSendSuper_stret + 34
0x37be7f9e: ldr.w r12, [r4, #8]
0x37be7fa2: pop {r3, r4}
0x37be7fa4: bx r12
0x37be7fa6: pop {r3, r4}
0x37be7fa8: b 0x37be7fb0 ; objc_msgSend_uncached
0x37be7faa: mov.w r1, #0
0x37be7fae: bx lr