小编Ans*_*sig的帖子

针对iPhone/Objective-C的try-catch异常处理实践

如果这个问题已经在其他地方得到解答,请道歉,但在搜索时我找不到任何决定性的答案:

我想知道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

27
推荐指数
2
解决办法
1万
查看次数

使用CAGradientLayer作为背景,同时使用drawRect绘制上下文:

我正在编写一个应用程序,将一些数据绘制成一个简单的图形,有时想在后台绘制比例.为此,我有一个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)

iphone objective-c

2
推荐指数
1
解决办法
5697
查看次数