Какао и Objective-C ++ - PullRequest
       8

Какао и Objective-C ++

1 голос
/ 15 января 2010

Мне кажется, я понимаю, как Objective-C ++ работает по отношению к Какао, и я довольно сведущ в основах командной строки C ++, но немного боюсь попробовать смешать его с Objective-C. Я могу создать графический интерфейс с помощью Interface Builder в XCode и даже автоматически создавать классы (файлы .h и .m) для интерфейса. Выходы, может быть, действия (я все еще путаюсь) оставляют фигурные скобки открытыми, чтобы вставить свой собственный код. Так что я мог бы просто поместить код C ++ в эти скобки, чтобы получать ввод с этих кнопок (и видеть вывод, и т. Д.)

Полагаю, в этом случае не нужно было бы изучать Obj-C, если бы они знали, куда поместить код C ++! Я не прав?

Кроме того, кто-нибудь может помочь мне понять это или, по крайней мере, указать мне, где я могу узнать больше об этом? Эта тема довольно редко встречается в Интернете, и я не понимаю документацию Apple.

Ответы [ 3 ]

3 голосов
/ 15 января 2010

Мое предложение будет иметь файлы Objective-C в вашем проекте (файл .m), а затем хранить Objective-C ++ в отдельных файлах (как говорится, файлы .mm).

Одной из стратегий было бы использование этих классов Objective-C ++ просто как оберток над классами C ++: напишите свой код на C ++, в файлах .cpp, как обычно. Затем, когда вам нужно получить доступ к некоторым функциям из вашего C ++ из файла Objective-C, напишите класс-оболочку Objective-C ++ и вызовите его из своего Objective-C.

Этот последний бит выглядит как большая работа для небольших проектов, и это так, но если у вас есть много C ++, который вам нужно использовать, и сравнительно немного Objective-C для написания, это работает довольно хорошо , (Представьте себе ситуацию, когда вы пишете интерфейс Cocoa для хорошо разработанной программы для Windows или Linux: когда вся логика приложения была написана без учета платформы, и вам «просто» нужно написать пользовательский интерфейс в Cocoa, чтобы запустить его на Mac.

Но еще одна причина использования этого подхода-обертки заключается в том, что Objective-C ++ является гибридным языком, поэтому имеет ограничения в отношении возможностей в обоих направлениях.

2 голосов
/ 15 января 2010

Что вам нужно понять о target-c ++, так это то, что имя это ложь. или, по крайней мере, подразумевает гораздо больше, чем вы думаете.

Objective-c ++ не означает, что вы можете написать гибридные "objects" object-c ++. Это означает, что вы можете использовать c ++ и цель c в одном файле. они могут ссылаться друг на друга напрямую - они не могут наследовать или наследовать друг от друга.

0 голосов
/ 15 января 2010

Переименуйте .m файлы в .mm, и вы сможете писать (Objective-) C ++ код в них.

...