ฉันทุกคนมีความหลากหลายทางภาษา แต่ Objective C นั้นบ้า ดังนั้นฉันจึงอยากรู้: เป็นไปได้ไหมที่จะเขียนโค้ดแอพ iPhone ด้วย C ++ ในขณะที่ใช้ Cocoa API ฯลฯ
ฉันทุกคนมีความหลากหลายทางภาษา แต่ Objective C นั้นบ้า ดังนั้นฉันจึงอยากรู้: เป็นไปได้ไหมที่จะเขียนโค้ดแอพ iPhone ด้วย C ++ ในขณะที่ใช้ Cocoa API ฯลฯ
คำตอบ:
คำตอบสั้น ๆ ใช่เรียงลำดับ คุณสามารถใช้ Objective-C ++ ซึ่งคุณสามารถอ่านได้ที่Apple Developer Connection
หากคุณรู้จัก C ++ แล้วการเรียนรู้ Objective-C นั้นค่อนข้างง่ายถ้าคุณตัดสินใจที่จะลองดู ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนั้นอยู่ที่ ADC เช่นกัน
แม้ว่า Objective-C จะดูเหมือน "บ้า" ในตอนแรก แต่ฉันขอแนะนำให้คุณยึดติดกับมัน เมื่อคุณมีช่วงเวลา "a-ha" ทันใดนั้นทุกอย่างก็เริ่มสมเหตุสมผล สำหรับฉันมันใช้เวลาประมาณ 2 สัปดาห์ในการจดจ่อกับ Objective-C ที่มุ่งเน้นในการทำความเข้าใจกรอบ Cocoa ภาษาและความลงตัวของมันทั้งหมด แต่เมื่อฉัน "ได้" จริงๆมันเป็นเรื่องที่น่าตื่นเต้นมาก
ฟังดูซ้ำซาก แต่มันเป็นเรื่องจริง ติดมันออก
แน่นอนว่าหากคุณนำไลบรารี C ++ หรือโค้ด C ++ ที่มีอยู่คุณสามารถใช้โมดูลเหล่านั้นกับ Objective-C / Objective-C ++
ฉันใช้ Objective-C เพื่อตบ UI ด้วยกัน
แต่ความกล้าหาญของโค้ดยังคงถูกเขียนด้วย C ++
นั่นคือวัตถุประสงค์หลักของ Objective-C อินเทอร์เฟซ UI และการจัดการเหตุการณ์
และใช้งานได้ดีสำหรับจุดประสงค์นั้น
ฉันยังคงชอบ C ++ เป็นแบ็กเอนด์สำหรับโค้ด (แต่ส่วนใหญ่เป็นเพราะฉันชอบ C ++) คุณสามารถใช้ Objective-C สำหรับแบ็กเอนด์ของแอปพลิเคชันได้อย่างง่ายดาย
#include <XXX>
เช่นเดียวกับไฟล์ C / C ++
ก่อนอื่นการบอกว่า Objective-C นั้น "บ้า" เป็นเรื่องตลก - ฉันมีหนังสือ Bjarne Stroustrup C ++ นั่งอยู่ข้างๆซึ่งมีนาฬิกาอยู่ที่ 1,020 หน้า PDF ของ Apple ใน Objective-C คือ 141
ถ้าคุณต้องการใช้ UIKit มันจะยากมากสำหรับคุณที่จะทำอะไรใน C ++ แอพ iPhone ร้ายแรงใด ๆ ที่สอดคล้องกับ UI ของ Apple จะต้องใช้ส่วน UI เพื่อเขียนใน Objective-C เฉพาะในกรณีที่คุณกำลังเขียนเกม OpenGL คุณสามารถยึดติดกับ C / C ++ ได้เกือบทั้งหมด
จากประสบการณ์นี้คุณสามารถใช้รหัส C ++ สำหรับรหัส "core" ของคุณได้ แต่คุณต้องใช้ objective-C สำหรับ iPhone รุ่นใดรุ่นหนึ่งโดยเฉพาะ
อย่าพยายามบังคับให้ Objective-C ทำหน้าที่เหมือน C ++ ในตอนแรกดูเหมือนว่าคุณจะเป็นไปได้ แต่โค้ดผลลัพธ์จะใช้ไม่ได้กับ Cocoa จริงๆและคุณจะสับสนมากว่าเกิดอะไรขึ้น ใช้เวลาในการเรียนรู้อย่างถูกต้องโดยไม่ต้องใช้ C ++ รอบ ๆ วิธีสร้าง GUI และแอปพลิเคชัน iPhone จากนั้นเชื่อมโยงในฐาน C ++ ของคุณ
คุณต้องใช้ Objective C เพื่อเชื่อมต่อกับ Cocoa API ดังนั้นจึงไม่มีทางเลือก แน่นอนว่าคุณสามารถใช้ C ++ ได้มากเท่าที่คุณต้องการเบื้องหลัง (Objective C ++ ทำให้เรื่องนี้ง่ายขึ้น)
มันเป็นภาษาที่บ้าจริง แต่ก็ ... สนุกดีที่จะใช้เมื่อคุณคุ้นเคยกับมันเล็กน้อย :-)
ผมไม่แน่ใจว่าเกี่ยวกับ C ++, แต่คุณสามารถรหัสแน่นอนการใช้งาน iPhone ใน C # โดยใช้ผลิตภัณฑ์ที่เรียกว่าMonoTouch
คุณสามารถดูโพสต์นี้สำหรับการอภิปรายโดยละเอียดเกี่ยวกับ MonoTouch Vs Obj-C: จะตัดสินใจอย่างไรระหว่าง MonoTouch และ Objective-C?
ฉันอยู่ระหว่างการย้ายแอพ Android ที่เน้นการคำนวณซึ่งเขียนด้วย Java ไปยัง iOS6 ฉันกำลังทำสิ่งนี้โดยการพอร์ตส่วนที่ไม่ใช่ UI จาก Java ไปยัง C ++ เขียนส่วน UI (น้อยที่สุด) ใน Obj-C และห่ออดีตไว้ในอินเทอร์เฟซ C (เล็ก) โดยใช้เทคนิค C / C ++ มาตรฐานเพื่อให้ สามารถเข้าถึงได้จาก Obj-C ซึ่งอยู่หลังชุดของ C.
ตอนนี้ได้ผลแล้วและยังไม่เจอ gotcha เลย ดูเหมือนว่าจะเป็นแนวทางที่ถูกต้องเนื่องจาก Xcode ช่วยให้คุณสามารถสร้างคลาส C ++ ได้เช่นเดียวกับคลาส Obj-C และโค้ดตัวอย่างอย่างเป็นทางการบางส่วนก็ทำในลักษณะนี้ ฉันไม่ต้องออกไปข้างนอกอินเทอร์เฟซที่รองรับอย่างเป็นทางการเพื่อทำสิ่งนี้
ดูเหมือนจะไม่มีประโยชน์อะไรมากจากการเขียนรหัส UI ที่เหลือของฉันใน C ++ แม้ว่าจะเป็นไปได้ก็ตามในมุมมองของความช่วยเหลือที่ผู้สร้างอินเทอร์เฟซใน Xcode มอบให้คุณดังนั้นคำตอบของฉันก็คือคุณสามารถใช้ C ++ สำหรับ เกือบทุกแอปของคุณหรือมากเท่าที่คุณคิดว่าเหมาะสม / สะดวก
ได้ แต่การคิดว่าคุณสามารถเขียนโปรแกรมได้ทุกประเภทในภาษาเดียวเป็นความคิดที่มีข้อบกพร่องเว้นแต่คุณจะเขียนโปรแกรมง่ายๆ Objective C ใช้สำหรับ Cocoa เนื่องจาก C # สำหรับ. NET ใช้เครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสมพยายามทำให้ C ++ โต้ตอบกับ Cocoa ผ่านการเขียนโค้ดเชื่อมโยงและพยายามทำให้โค้ด C ++ ทำงานตามข้อกำหนดของ Cocoa ไม่ใช่ความคิดที่ดีและไม่คาดหวัง C ++ ประสิทธิภาพจาก Objective C คือ คุณควรพยายามออกแบบเค้าโครงและสถาปัตยกรรมของแอปโดยคำนึงถึงทักษะที่มีอยู่และพิจารณาว่าส่วนใดควรเขียนด้วยภาษาใดจึงจะสร้างตามนั้น
ฉันกำลังเขียน Objective-C ++ framework ที่เรียกว่า Objective-X ซึ่งทำให้ PURE C ++ iPHONE PROGRAMMING เป็นไปได้ คุณสามารถทำได้ดังนี้:
#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 นี้ไว้แล้วและมัน w0rkX0rz เหมือนมีเสน่ห์ ;-) จะพร้อมใช้งานเร็ว ๆ นี้บน GoogleCode ค้นหา Objective-X หรือไปที่http://infotronix.orgfree.com/objectivexประมาณ หนึ่งสัปดาห์ต่อมา!
อัปเดต (แต่ดูเหมือนจะไม่ใช้งาน) URL: http://code.google.com/p/objectivex/