晚上好,
我刚刚完成了我制作的这个新应用程序,并且在将它提交到应用程序商店之前我正在对其进行一些最终测试,但出现了一些让我非常难过的事情。对于我的一个视图控制器,我使用的是 UITableView,所以我实现了
-(UIView*) tableView:(UITableView*) tableView viewForHeaderInSection:(NSInteger) section
UITableViewDelegate 协议的方法,以便我可以为标题提供自己的自定义视图。(是的,我确实也符合 UITableViewDataSource 协议并为其提供了所有必要的方法)
所以我编写了自己的 UIView 类并实现了 drawRect: 方法来绘制我自己的自定义视图。当我在 iPad 6.0 和 iPhone 6.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 设备上运行而不是在模拟器上运行时才会发生这种情况?
谢谢,