こんばんは、
作成したこの新しいアプリはほぼ完成し、アプリストアに送信する前にいくつかの最終テストを行っていましたが、何かが起こって本当に困惑しました。ビューコントローラの1つに、UITableViewを使用しているため、
-(UIView*) tableView:(UITableView*) tableView viewForHeaderInSection:(NSInteger) section
UITableViewDelegateプロトコルのメソッド。これにより、ヘッダーに独自のカスタムビューを提供できます。(はい、UITableViewDataSourceプロトコルにも準拠し、それに必要なすべてのメソッドを提供しました)
そこで、独自のUIViewクラスを作成し、独自のカスタムビューを描画するためのdrawRect:メソッドを実装しました。これをiPad6.0とiPhone6.0の両方のシミュレーターで実行すると、完全に正常に実行されます。
ただし、自分のiOSデバイス(iOS 6を実行している)を接続すると、クラッシュしてEXC_BAD_ACCESSがスローされます。
いくつかのブレークポイントを実行したところ、実際のデバイスでアプリを実行すると、コードはここまでしか実行されないことがわかりました。
// This code is the beginning of my drawRect method for my custom view
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef lightBlue = [UIColor colorWithRed:72.0/255.0
green:121.0/255.0
blue:201.0/255.0 alpha:1].CGColor;
CGColorRef cream = [UIColor colorWithRed:235.0/255.0
green:235.0/255.0
blue:235.0/255.0 alpha:1].CGColor;
CGContextSetFillColorWithColor(context,cream);
CGContextFillRect(context, _paperBox);
// the _paperBox variable was defined earlier as CGRect _paperBox
// the _paperBox variable was given a value in the -(void)layoutSubviews method
CGColorRef shadow = [UIColor colorWithWhite:.5 alpha:.5].CGColor;
CGContextSetShadowWithColor(context, CGSizeMake(0,3), 2, shadow);
CGContextSetFillColorWithColor(context, lightBlue);
// and later on I setup some code to draw a linear gradient:
NSArray colors = [NSArray arrayWithObjects:(__bridge id) lightBlue,
(__bridge id) cream,
nil];
EXC_BAD_ACCESSは、その最後の行で発生します。シミュレータではなく、実際のiOSデバイスで実行している場合にのみこれが発生するのはなぜですか?
ありがとう、