摘要:
使用 @synchronized() 来标明一个同步的方法。实现同步的方式与其它语言类型,使用一个互斥锁,锁定对象决定了锁定范围的大小,比如锁定实例对象只对当前实例生效,锁定类对象对所有实例生效。当同步方法中的代码抛出异常时,运行时会解锁,让下面等待代码执行此同步方法... 阅读全文
摘要:
Object-C 提供类似 Java / C++风格的错误处理模型,当使用 -fobjc-exceptions 开关(gcc > 3.3)时,它可以工作,但是只限于 OS X v10.3 以后的版本,之前的版本并不提供这一支持。使用错误捕获的原则与其它语言类似:你不能用它来当作正常的处理流的判断条件,而把它仅仅当作“意外”可以使用多个 @catch 块来捕获不同的错误类型。Cup *cup = [[Cup alloc] init];@try { [cup fill];}@catch (NSException *exception) { NSLog(@"main: Caught 阅读全文
摘要:
在 object-c 中,selector 包含两种意义:在源文件中,它指向一个方法调用,在编译后它指向一个 unque indentifier。编译后的 selector 的类型为 SEL,同名的方法的选择器也相同。使用 selector 来调用object 方法是 Cocoa 框架 "目标-动作" 编程模型的基础。可以使用 @selector 来为 selector 创建一个别名:SEL setWidthHeight;setWidthHeight = @selector(setWidth:height:);在编译时用别名方法引用 seletor 不会对性能造成大的影响。 阅读全文