iPhone을 C ++로 프로그래밍 할 수 있습니까?


124

나는 언어 다양성을 추구하지만 Objective C는 제정신이 아닙니다. 그래서 궁금합니다. Cocoa API 등을 사용하는 동안 C ++로 iPhone 앱을 코딩 할 수 있습니까?

답변:


57

짧은 대답, 예, 일종의. Apple Developer Connection 에서 읽을 수있는 Objective-C ++를 사용할 수 있습니다 .

이미 C ++를 알고 있다면 Objective-C를 배우는 것은 매우 간단 할 것입니다. 이 주제에 대한 더 많은 정보는 ADC에도 있습니다.


1
Objective-C를 배우기 위해 숙련 된 C ++ 프로그래머를위한 웹 사이트 나 책을 추천 해 주실 수 있습니까? 나는 몇 가지 테스트가 함께 애플 리케이션 매쉬 관리,하지만 난 구문을 약간 뒤쪽을 발견하고 난 그냥 목표 - C에 대한 지식의 부족을 통해 메모리 누수 등으로 이어질 가지 일을하고 있다는 확신
레아 헤이즈

3
@LeaHayes "From C ++ to Objective-C"라는 무료 책. C ++를 알고 있다고 가정하고 Objective-C에서 작업이 어떻게 다르게 수행되는지 알려줍니다. pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (원문 프랑스어의 영어 번역)
olafure

61

Objective-C는 처음에는 실제로 "미친"것처럼 보이지만 계속 사용하는 것이 좋습니다. "a-ha"순간이 있으면 갑자기 모든 것이 이해되기 시작합니다. 나에게는 Cocoa 프레임 워크, 언어, 그리고 모든 것이 어떻게 조화를 이루는 지 이해하는 데 집중된 Objective-C 집중에 약 2 주가 걸렸습니다. 하지만 일단 정말 "얻었다"는 것은 매우 흥미로 웠습니다.

진부하게 들리지만 사실입니다. 튀어 나오십시오.

물론 C ++ 라이브러리 나 기존 C ++ 코드를 가져 오는 경우 해당 모듈을 Objective-C / Objective-C ++와 함께 사용할 수 있습니다.


42

Objective-C를 사용하여 UI를 함께칩니다.
그러나 코드의 어려운 부분은 여전히 ​​C ++로 작성되었습니다.

이것이 Objective-C의 UI 인터페이스와 이벤트 처리의 주요 목적입니다.
그리고 그것은 그 목적을 위해 훌륭하게 작동합니다.

나는 여전히 코드의 백엔드로 C ++를 좋아한다 (하지만 주로 C ++를 좋아하기 때문이다). 애플리케이션의 백엔드에도 Objective-C를 아주 쉽게 사용할 수있다.


9
@Spanky : 어떻게 o 정확히 무엇을하는지. * .m 파일에 일반 C를 쓸 수 있습니다. * .mm 파일 (Objective-C ++)에 일반 C ++를 작성할 수 있습니다. Objective-C (++) 파일 내에서 #include <XXX>C / C ++ 파일처럼 일반을 사용할 수 있습니다 .
Martin York

28

우선, Objective-C가 "미친다"라고 말하는 것은 유머러스합니다. Bjarne Stroustrup C ++ 책이 내 옆에 앉아 있으며 1020 페이지에 달합니다. Objective-C에 대한 Apple의 PDF는 141입니다.

UIKit을 사용하고 싶다면 C ++로 무엇이든하기가 매우 어려울 것입니다. Apple의 UI를 준수하는 진지한 iPhone 앱은 Objective-C로 작성하려면 UI 부분이 필요합니다. OpenGL 게임을 작성하는 경우에만 거의 전적으로 C / C ++에 충실 할 수 있습니다.


30
언제부터 적은 문서화가 좋은가요? "C ++ 프로그래밍 언어"는 매우 철저하며 STL도 문서화합니다.
Timmmm 2010

2
@Timmmm : K & R이 책의 앞부분에서 그 점을 지적한 이후로. Objective-C는 C ++보다 훨씬 작은 언어로 많은 동일한 이점 (및 일부 자체)이 있습니다. 물론 모든 것이 트레이드 오프입니다. 그러나 최소한의 문서로 인해 숙련 된 C (또는 C ++) 사용자가 Obj-C를 쉽게 익힐 수 있습니다.
Ben Zotto 2010 년

62
미안하지만 ObjC는 미쳤습니다. 함수를 선언하는 완전히 다른 방식, 대괄호 사용에 대한 인스턴스. 아무 이익도없이 다른 것입니다. 그들은 말도 안되는 구문 없이도 동일한 효과적인 언어의 초안을 만들 수있었습니다. 그들은하지 않기로 결정했습니다. 따라서 그것은 미쳤습니다.
Rhubarb

13
@Rhubarb-Objective-C를 좋아하지만 이상한 구문이 목적이 없다는 데 동의해야합니다.
Raphael

@Rhubarb, Yup, 기억하세요. 애플은 그 광기를 내놓은 회사이고, 애플은 다르다는 목적으로 만 다릅니다.
SeanRamey

14

약간의 경험이 있으면 "핵심"코드에 C ++ 코드를 사용할 수 있지만 iPhone과 관련된 모든 경우에는 Objective-C를 사용해야합니다.

Objective-C가 C ++처럼 작동하도록 강제하지 마십시오. 처음에는 이것이 가능한 것 같지만 결과 코드는 Cocoa에서 실제로 잘 작동하지 않으며 진행 상황에 대해 매우 혼란 스러울 것입니다. 시간을내어 C ++없이 GUI 및 iPhone 애플리케이션을 빌드하는 방법을 제대로 배우고 C ++ 기반에 링크하십시오.


3

Cocoa API와 인터페이스하려면 Objective C를 사용해야하므로 선택의 여지가 없습니다. 물론 백그라운드에서 원하는만큼 C ++를 사용할 수 있습니다 (Objective C ++를 사용하면이 작업이 쉬워집니다).

정말 미친 언어이지만 조금 익숙해지면 사용하는 것도 재미 있습니다. :-)



2

Java로 작성된 계산 집약적 인 Android 앱을 iOS6으로 이식하는 중입니다. 저는 UI가 아닌 부분을 Java에서 C ++로 이식하고, Obj-C로 (최소한) UI 부분을 작성하고, 표준 C / C ++ 기술을 사용하여 전자를 (작은) C 인터페이스로 래핑하여이를 수행하고 있습니다. 그것은 결국 C의 상위 집합 인 Obj-C에서 액세스 할 수 있습니다.

이것은 지금까지 효과적이었으며 어떤 문제도 발생하지 않았습니다. Xcode를 사용하면 Obj-C 클래스뿐만 아니라 C ++ 클래스도 만들 수 있고 일부 공식 샘플 코드는 이러한 방식으로 작업을 수행하므로 합법적 인 접근 방식 인 것 같습니다. 이 작업을 수행하기 위해 공식적으로 지원되는 인터페이스를 벗어날 필요가 없었습니다.

Xcode의 인터페이스 빌더가 제공하는 도움을 고려할 때 가능하더라도 C ++로 남은 UI 코드를 작성하여 얻을 수있는 것이 많지 않은 것 같으므로 제 대답은 C ++를 사용할 수 있다는 것입니다 거의 모든 앱 또는 적절하고 편리하다고 생각되는만큼의 앱입니다.


2

예,하지만 아주 간단한 프로그램을 작성하지 않는 한 모든 종류의 프로그램을 단일 언어로 프로그래밍 할 수 있다고 생각하는 것은 잘못된 생각입니다. Objective C는 Cocoa를위한 것입니다. C #은 .NET 용이므로 올바른 작업에 적합한 도구를 사용합니다. 브리징 코드를 작성하고 C ++ 코드가 Cocoa 요구 사항에 따라 작동하도록 시도하는 것은 C ++를 기대하지 않는 좋은 생각이 아닙니다. Objective C의 성능은 다음과 같습니다. 기존 기술을 고려하여 앱의 레이아웃 디자인과 아키텍처를 확인하고 어떤 부분을 어떤 언어로 작성해야하는지 결정한 다음 그에 따라 빌드해야합니다.


0

저는 현재 Objective-X라는 Objective-C ++ 프레임 워크를 작성 중입니다. 따라서 PURE C ++ iPHONE 프로그래밍이 가능합니다. 다음과 같이 할 수 있습니다.

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

GCC의 적절한 명령 줄 옵션을 사용하여 컴파일합니다. 나는 이미이 helloworld app & it w0rkX0rz를 매력처럼 컴파일했습니다. ;-) 곧 GoogleCode에서 사용할 수 있습니다. Objective-X를 검색하거나 http://infotronix.orgfree.com/objectivex를 방문하십시오. . 일주일 후!

업데이트 (비활성) URL : http://code.google.com/p/objectivex/


4
게시가 실제로 가능해질 때까지 기다리지 않으시겠습니까?
Georg Fritzsche

8
두 링크 모두 현재 404입니다
Zhao Xiang

1
SourceForge에 따르면 : "2014-01-24 현재이 프로젝트는 더 이상 활발하게 개발되지 않습니다." sourceforge.net/projects/objectivex
JAL

0

주제에서 약간 벗어난 것일 수 있지만 어쨌든. iOS 장치에서 바로 C ++를 프로그래밍 할 수 있습니다. CppCode iOS 앱-http://cppcode.info를 확인 하십시오 . 나는 나중에 c와 c ++와 objective-c를 배우는 것이 도움이된다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.