1
爲什麼此代碼在模擬器上運行並在實際設備上崩潰?在設備上運行時出現EXC_ARM_DA_ALIGN錯誤
我有一個非常簡單的代碼,繪製一個圓圈。該代碼的子類爲UIView
,並且可以在模擬器上正常運行(iOS 5.1和iOS 6.0)。
Circle.h
#import <UIKit/UIKit.h>
@interface Circle : UIView
@end
Circle.m
#import "Circle.h"
@implementation Circle
-(CGPathRef) circlePath{
UIBezierPath *path = [UIBezierPath bezierPath];
[path addArcWithCenter:self.center radius:10.0 startAngle:0.0 endAngle:360.0 clockwise:YES];
return path.CGPath;
}
- (void)drawRect:(CGRect)rect
{
CGPathRef circle = [self circlePath];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextAddPath(ctx, circle);
CGContextStrokePath(ctx);
}
@end
當我嘗試在一個iPad2運行iOS 5.1.1我得到一個錯誤執行代碼(EXC_BAD_ACCESS(code=EXC_ARM_DA_ALIGN,address=0x31459241)
)在CGContextAddPath(ctx, circle);
行。
我不知道問題出在哪裏。任何人都可以指出我正確的方向來解決這個問題嗎?
謝謝,這解決了這一問題。我沒有收到一件事,爲什麼我的代碼在模擬器上運行? CGPath應該已經發布了,我錯了嗎? –
@Xavi i386指令集比ARM更不挑剔。無論如何,模擬器從來都不是設備實際性能的良好基準。 – CodaFi