在@try块中调用函数会导致性能损失吗?

Pét*_*son 5 objective-c

blabla不使用try块调用相比,这会导致性能下降吗?

-(void)bla{
    @try{
        [self blabla];
    }
    @catch (NSException *e) {
        // Do nothing
    }
}
Run Code Online (Sandbox Code Playgroud)

Bry*_*hen 5

来自文档

零成本 @try 块

进入零成本 @try 块的 64 位进程不会导致性能损失。这与 32 位进程的机制不同,后者调用 setjmp() 并执行额外的“簿记”。但是,在 64 位可执行文件中抛出异常的代价要高得多。为了在 64 位中获得最佳性能,您应该仅在绝对必要时抛出异常。

所以没有64 位进程的开销