Во-первых, простой ответ: используйте -release
вместо . Я считаю, что -drain
был добавлен в 10.4 в качестве псевдонима для -release
, а в 10.5 он получил собственное поведение для GC. Это позволяет коду использовать его в 10.5 и все еще работать в 10.4. У GNUstep, вероятно, еще нет новой функциональности.
Очевидно, вы пробуете какой-то стандартный код Objective-C в Ubuntu, но это заставляет меня задуматься, чего вы надеетесь достичь в долгосрочной перспективе. Не позволяй мне сдерживать тебя, если это просто из любопытства или из-за этого. Однако, если вы планируете использовать GNUstep для разработки Objective-C для серьезного программирования, я бы посоветовал против этого по нескольким причинам.
- Objective-C - это интересный язык программирования с множеством мощных функций, но не намного более (сам по себе), чем другие объектно-ориентированные языки. Objective-C действительно становится неотразимым, когда вы соединяете его с крутыми функциями в Какао и других связанных инфраструктурах. Apple (прежде всего) управляет этими платформами, и только для Mac / iPhone.
- Apple, как правило, располагает лучшими инструментами и пользовательским интерфейсом для разработки Objective-C. Они также вкладывают значительные средства в разработку LLVM и Clang в качестве замены для gcc. Это (а уже делает) делает возможными некоторые очень интересные вещи, для которых gcc не был разработан.
- GNUstep - замечательный проект, но, поскольку он зависит от добровольцев и обратного инжиниринга новых функций, добавленных Apple, он всегда отстает от современного уровня. Новые блестящие возможности Objective-C всегда будут начинаться с Apple и (как правило) в конце концов будут уменьшаться.
- Создание кроссплатформенных приложений можно было бы сделать в Objective-C, но другие языки намного лучше подходят для этой задачи. (Я не настолько фанат, чтобы предположить, что Objective-C - лучшее решение для каждой проблемы. Используйте лучший инструмент, который у вас есть.)
Я не говорю, что использование языков на чем-то кроме их "родной платформы" - это плохо. Я просто предлагаю, чтобы, если это то, что вы собираетесь делать, вы знали о потенциальных проблемах и были уверены, что плюсы перевешивают минусы.