如果这个问题已经在其他地方得到解答,请道歉,但在搜索时我找不到任何决定性的答案:
我想知道try-catch块何时用于objective-c iPhone应用程序.Apple的"Objective-C编程语言简介"指出异常是资源密集型的,并且应该"不使用异常来进行一般的流量控制,或者只是表示错误".通过阅读这里的一些相关问题,我还得知人们并不经常在实践中使用这种方法.
所以我想问题是:在为iPhone/Objective-C开发时使用try-catch块是否合适的情况是什么时候应该绝对不使用?
例如,在处理数组中的对象时,我可以使用它们来捕获超出边界和其他异常.我有一个方法,执行很少的任务与在多个数组中传递的对象.如果发生错误,该方法返回nil,try-catch块可以帮助我捕获异常.但是,我当然可以在这里和那里简单地编写一些if-tests,以确保我,例如,永远不会尝试访问超出数组边界的索引.在这个情况下,你会怎么做?
非常感谢!
iphone error-handling exception-handling objective-c try-catch
我正在编写一个应用程序,将一些数据绘制成一个简单的图形,有时想在后台绘制比例.为此,我有一个UIView子类,它充当图形背景,只需使用drawRect:方法绘制比例(数据元素将作为子视图添加到此视图中,因为我希望用户能够与它们进行交互) .
但是,我还想要一个渐变背景颜色,并为此目的使用了CAGradientLayer(如此线程中所示).但是当我将其添加为子图层时,会出现渐变背景,但我在drawRect中执行的操作:显示!
我确定我遗漏了一些简单的东西或误解了如何使用CAGradientLayer或其他东西,所以任何帮助或建议都值得赞赏!
这是我的UIView子类中的相关代码:
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Create a gradient background
CAGradientLayer *gradientBackground = [CAGradientLayer layer];
gradientBackground.frame = self.bounds;
gradientBackground.colors = [NSArray arrayWithObjects:(id)[[UIColor grayColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[self.layer insertSublayer:gradientBackground atIndex:0];
}
return self;
}
- (void)drawRect:(CGRect)rect {
// Get the graphics context
CGContextRef context = UIGraphicsGetCurrentContext();
// Clear the context
CGContextClearRect(context, rect);
// Call actual draw method
[self drawInContext:context];
}
-(void)drawInContext:(CGContextRef)context {
CGFloat step;
// Draw Y scale …Run Code Online (Sandbox Code Playgroud)