3

Objective-C 2.0 имеет некоторые новые усовершенствования:Поддерживается ли обработка исключений Objective-C 2.0 на платформах, отличных от Mac OS X?

  • мусора
  • быстро перечисление: for..in
  • свойства
  • нить синхронизации: @synchronized (само)
  • @ попробовать/@ улов/@ finally/@ throw exception Обработка

Я нахожусь в заинтересовался использованием Objective-C 2.0 в качестве языка для программирования переносимого кода на нескольких платформах операционной системы, избегая при этом таких фреймворков, как OpenStep или GNUStep.

Однако, хотя GCC 3.4.5 на Windows, будет анализировать синтаксис использования @ попытаться/@ поймать/@, наконец,/@ обработки бросить исключение при компиляции с -fobjc-исключений, он по-прежнему генерирует эту ошибку:

error: storage size of '_stackExceptionData' isn't known 

Есть ли поддержка функций Objective-C 2.0 в операционных системах, отличных от Mac OS X версии 10.3 и выше?

ответ

1

Apple использует вариант/вилку стандартного GCC, в котором встроена поддержка Objective-C 2.0. Насколько я знаю, ни одна из функций Objective-C 2.0 не существует в стандартном GCC.

Я не совсем уверен в обработке исключений, но другие функции, которые вы указали, к сожалению, недоступны на других платформах.

P.S. GNUstep (и Cocoa) - это реализация OpenStep, которая является спецификацией.

1

Для таких функций требуются поддержка как для компилятора, так и для выполнения, поэтому, возможно, для компилятора, который поддерживает синтаксис (LLVM/Clang), многие из этих функций вызывают вызов во время выполнения Objective-C и, насколько мне известно (и быстрая двойная проверка в Google), среда исполнения GNU не имеет необходимой поддержки.

2

Цитата Cocotron gets some Objective-C 2.0 support via gcc 4.3.0:

Recent Cocotron patches by Johannes also completely enable @try/@catch which had been present in the compiler but needed runtime support.

www.cocotron.org о том, что Cocotron является:

The Cocotron is an open source project which implements an Objective-C API similar to that described by Apple Inc.'s Cocoa documentation. This includes the AppKit, Foundation, Objective-C runtime and support APIs such as CoreGraphics and CoreFoundation

Так что, если вы заинтересованы в кросс-платформенной разработки Obj-C Cocotron может быть interesing для вас. ..

0

В рамках проекта Étoilé существует межплатформенная среда выполнения, которая поддерживает исключения Objective-C (и @synchronized как результат) и, AFAIK, свойства:

http://www.nabble.com/ANN:-New-Objective-C-Runtime-td13648692.html

Кстати, исключения языка Objective-C не являются функция Objective-C 2.0. Они были в среде NeXT с момента создания Panther.

0

@try/@catch/@finally/@throw Фактически предшествует Objective-C 2.0. Он был представлен с MacOSX 10.3, в то время как Objective-C 2.0 был введен с 10.5 (Leopard).