非Mac OS X平台是否支持Objective-C 2.0异常处理?
Objective-C 2.0有一些新的增强功能:非Mac OS X平台是否支持Objective-C 2.0异常处理?,objective-c,multithreading,exception,gcc,garbage-collection,Objective C,Multithreading,Exception,Gcc,Garbage Collection,Objective-C 2.0有一些新的增强功能: 垃圾收集 快速枚举:for..in 性质 线程同步:@synchronized(self) @尝试/@catch/@finally/@throw异常 处理 我对使用Objective-C2.0作为跨多个操作系统平台编写可移植代码的语言感兴趣,同时避免使用OpenStep或GNUStep等框架 但是,尽管Windows上的gcc 3.4.5在使用-fobjc异常编译时将解析使用@try/@catch/@finally/@throw异常处理的语
- 垃圾收集
- 快速枚举:
for..in
- 性质
- 线程同步:@synchronized(self)
- @尝试/@catch/@finally/@throw异常 处理
error: storage size of '_stackExceptionData' isn't known
Mac OS X v10.3及更高版本以外的操作系统是否支持Objective-C 2.0功能?苹果使用标准GCC的变体/分支,其中内置了Objective-C 2.0支持。据我所知,标准GCC中不存在Objective-C2.0特性 我不太清楚异常处理,但很遗憾,您列出的其他功能在其他平台上不可用
p.S.GNUstep(和Cocoa)是OpenStep的一个实现,OpenStep是一个规范。所讨论的功能需要编译器和运行时支持,因此,尽管构建一个支持语法的编译器(想到LLVM/Clang)当然是可能的,但这些功能中的许多都会调用Objective-C运行时,据我所知(并在Google上快速重复检查),GNU运行时没有必要的支持。引用自: Johannes最近的Cocotron贴片 还完全启用@try/@catch 已经存在于编译器中 但是需要运行时支持 关于Cocotron是什么: Cocotron是一个开源项目 它实现了Objective-CAPI 与苹果所描述的相似 公司的可可文件。这 包括AppKIT,基金会, Objective-C运行时和支持API 例如CoreGraphics和 核心基金会
因此,如果您对跨平台obj-c开发感兴趣,Cocotron可能会对您感兴趣…作为埃托莱项目的一部分,有一个跨平台运行时,它支持Objective-c异常(因此,
@synchronized
),而且,还有以下属性:
顺便说一下,Objective-C语言异常不是Objective-C 2.0的特性。自Panther以来,它们一直处于下一个运行时。实际上早于Objective-C2.0。它是在MacOSX 10.3中引入的,而Objective-C2.0是在10.5(Leopard)中引入的