วิธีการตัดสินใจระหว่าง MonoTouch และ Objective-C [ปิด]


273

หลังจากนั่งในเซสชั่นวันนี้บน Mono ที่งาน. Net ในท้องถิ่นการใช้ MonoTouch นั้นถูก 'สัมผัส' เพื่อเป็นทางเลือกสำหรับการพัฒนา iPhone รู้สึกสะดวกสบายมากใน C # และ. Net ดูเหมือนว่าจะเป็นตัวเลือกที่น่าสนใจแม้จะมีบางส่วนที่แปลกประหลาดของ Mono stack อย่างไรก็ตามเนื่องจาก MonoTouch มีค่าใช้จ่าย $ 400 ฉันจึงค่อนข้างขาดใจหากนี่คือหนทางที่จะพัฒนา iPhone

ทุกคนมีประสบการณ์ในการพัฒนากับ MonoTouch และ Objective-C และหากเป็นเช่นนั้นการพัฒนาด้วย MonoTouch นั้นง่ายกว่าและเร็วกว่าการเรียนรู้ Objective-C มากและจะมีมูลค่า $ 400 หรือไม่?


13
ฉันคิดว่าความคิดเห็นมากมายเกี่ยวกับ MonoTouch ที่ไม่สามารถเรียกใช้บน iOS นั้นไม่ถูกต้องอีกต่อไปเนื่องจาก Apple ได้ผ่อนคลายข้อ จำกัด ของเครื่องมือ dev ดู: apple.com/pr/library/2010/09/09statement.html
sivabudh

คำตอบ:


520

ฉันได้เห็นคำถามนี้ (และความหลากหลายของมัน) เมื่อเร็ว ๆ นี้ อะไร amazes ฉันเป็นวิธีการที่คนมักจะตอบสนอง แต่วิธีการไม่กี่คำตอบ

ฉันมีการตั้งค่าของฉัน (ฉันสนุกกับทั้งสองกอง) แต่นี่คือจุดที่ "คำตอบ" ส่วนใหญ่เริ่มผิดไป ไม่ควรเกี่ยวกับสิ่งที่ฉันต้องการ (หรือสิ่งที่คนอื่นต้องการ)

นี่คือวิธีที่ฉันจะไปเกี่ยวกับการกำหนดค่าของ MonoTouch - ฉันไม่สามารถเป็นเป้าหมายได้อย่างชัดเจน แต่ฉันคิดว่านี่ไม่ใช่ความกระตือรือร้นที่น่ารัก:

  • นี่เพื่อความสนุกสนานหรือธุรกิจ หากคุณต้องการรับคำปรึกษาในด้านนี้คุณสามารถคืนเงิน $ 399 ได้อย่างรวดเร็ว

  • คุณต้องการที่จะเรียนรู้แพลตฟอร์มที่อยู่ข้างในหรือคุณ "เพียงแค่" ต้องการเขียนแอพสำหรับมันหรือไม่?

  • คุณชอบ. Net เพียงพอที่การใช้ dev dev ที่แตกต่างกันจะนำความสนุกมาให้คุณหรือไม่? อีกครั้งฉันชอบทั้งกอง (Apple และ Mono) แต่สำหรับฉัน MonoTouch ทำให้ประสบการณ์นั้นสนุกมากขึ้น ฉันไม่ได้หยุดใช้เครื่องมือของ Apple แต่ส่วนใหญ่เป็นเพราะฉันชอบทั้งสองอย่างมาก ฉันรัก iPhone และฉันรัก. Net ในกรณีนี้สำหรับฉัน MonoTouch เป็นคนไร้สมอง

  • คุณรู้สึกสะดวกสบายในการทำงานกับ C หรือไม่? ฉันไม่ได้หมายถึง Objective-C แต่ C - มันสำคัญเพราะ Objective-C คือ C มันเป็นเวอร์ชั่น OO ที่สวยงามแฟนซีและเป็นมิตร แต่ถ้าพอยน์เตอร์ให้ heebie-jeebies MonoTouch เป็นเพื่อนของคุณ และอย่ารับฟังผู้ที่คิดว่าคุณเป็นนักพัฒนาถ้ามันเกิดขึ้นว่าคุณไม่ชอบพอยน์เตอร์ (หรือ C เป็นต้น) ฉันเคยเดินไปรอบ ๆ พร้อมกับสำเนาของการอ้างอิงพ็อกเก็ต IBM ROM BIOS และเมื่อฉันเขียนแอสเซมบลีและบังคับให้คอมพิวเตอร์ของฉันเข้าสู่โหมดวิดีโอตลกและเขียนบิตเรนเดอร์ตัวอักษรสำหรับพวกเขาเอง ไม่คิดว่า QuickBasic devs เป็นเรื่องยุ่งยาก ฉันเป็นQuickBasic dev (นอกเหนือจากส่วนที่เหลือ) ไม่ยอมแพ้ให้กับ nerd machismo ถ้าคุณไม่ชอบ C และถ้าคุณไม่ชอบพอยน์เตอร์และถ้าคุณต้องการอยู่ไกลจากการจัดการหน่วยความจำด้วยตนเองให้มากที่สุด (และเพื่อความเป็นธรรมมันไม่เลวเลยใน ObjC) .. MonoTouch และไม่ต้องใช้ guff สำหรับมัน

  • คุณต้องการกำหนดเป้าหมายผู้ใช้หรือธุรกิจหรือไม่ มันไม่ได้สำคัญอะไรสำหรับฉัน แต่ยังมีคนอยู่ที่นั่นบน Edge และความจริงก็คือ: คุณสามารถสร้างแพ็คเกจดาวน์โหลดที่เล็กกว่านี้ได้ถ้าคุณใช้กองซ้อนของ Apple ฉันได้เล่นกับ MonoTouch และฉันมีแอพเล็ก ๆ ที่เหมาะสมเมื่อบีบอัดลงมาประมาณ 2.7 MB (เมื่อส่งแอปของคุณเพื่อการกระจายคุณซิปมัน - เมื่อแอพถูกดาวน์โหลดจากร้านค้าพวกเขา ' ซิปใหม่ - ดังนั้นเมื่อทราบว่าแอปของคุณจะมีขนาดต่ำกว่า 10MB OTA ให้ซิปที่ตัวดูดก่อน - คุณจะต้องประหลาดใจกับ MonoTouch) แต่ความสุขของ MT นั้นครึ่งล้านเมกกะกับเกือบสาม (ตัวอย่าง) เป็นสิ่งที่อาจมีความสำคัญสำหรับคุณหากคุณกำหนดเป้าหมายไปยังผู้ใช้ปลายทาง หากคุณกำลังคิดว่าจะทำงานระดับองค์กรสักสองสาม MB จะไม่สำคัญเลย และ, เพื่อให้ชัดเจน - ฉันจะส่งแอพที่ใช้ MT ไปยังร้านค้าในไม่ช้าและฉันก็ไม่มีปัญหาอะไรกับขนาด ไม่รบกวนฉันเลย แต่ถ้านั่นเป็นสิ่งที่จะต้องกังวลคุณแล้วแอปเปิ้ลชนะกองนี้

  • การทำงานของ XML ใด ๆ MonoTouch ระยะเวลา

  • การจัดการสตริง? การจัดการวันที่? อีกหนึ่งล้านสิ่งเล็ก ๆ น้อย ๆ ที่เราคุ้นเคยกับกรอบการทำงานทุกอย่างของ. Net MonoTouch

  • บริการเว็บ? MonoTouch

  • พวกเขาทั้งสองมีข้อดี Objective-C มีแนวโน้มที่จะมีมากขึ้นอย่างละเอียดที่คุณต้องเขียนมัน คุณจะพบว่าคุณกำลังเขียนโค้ดด้วย C # คุณไม่จำเป็นต้องเขียนด้วย ObjC แต่มันไปได้ทั้งสองวิธี หัวข้อเฉพาะนี้สามารถเติมหนังสือได้ ฉันชอบไวยากรณ์ C # แต่หลังจากได้รับการตอบสนองครั้งแรกของฉัน - คือ - อย่างอื่นปฏิกิริยา Objective-C ฉันได้เรียนรู้ที่จะสนุกกับมันค่อนข้างน้อย ฉันทำให้ความสนุกของมันนิดในการเจรจา (มันเป็นเรื่องแปลกสำหรับ devs ที่กำลังใช้ C # / Java / etc.) แต่ความจริงก็คือว่าผมมีวัตถุประสงค์ -C จุดในหัวใจของฉันที่ทำให้ฉันมีความสุขที่มีรูปร่าง

  • คุณวางแผนที่จะใช้ Interface Builder หรือไม่? เพราะแม้ในเวอร์ชั่นแรกนี้ฉันพบว่าตัวเองทำงานหนักน้อยกว่ามากในการสร้าง UIs ของฉันด้วย IB และใช้พวกมันเป็นรหัส รู้สึกเหมือนว่าขั้นตอนทั้งหมดหายไปจากการทำสิ่งต่าง ๆ ใน Objective-C / IB และฉันค่อนข้างแน่ใจว่าเป็นเพราะขั้นตอนทั้งหมดหายไปจากวิธีการทำสิ่งต่าง ๆ ของ Objective-C / IB จนถึงตอนนี้และฉันไม่คิดว่าฉันได้ทดสอบอย่างเพียงพอแล้วจนถึงตอนนี้ MonoTouch เป็นผู้ชนะที่นี่สำหรับงานที่คุณต้องทำน้อยลง

  • คุณคิดว่ามันสนุกที่จะเรียนรู้ภาษาและแพลตฟอร์มใหม่ ๆ หรือไม่? ถ้าเป็นเช่นนั้น iPhone มีข้อเสนอมากมายและสแต็คของ Apple มีแนวโน้มที่จะพาคุณออกจากเขตความสะดวกสบายของคุณ - ซึ่งสำหรับนักพัฒนาบางคนสนุกมาก (สวัสดี - ฉันเป็นหนึ่งในนักพัฒนาเหล่านั้น - ฉันล้อเล่น แอปเปิ้ลเป็นช่วงเวลาที่ยากลำบาก แต่ฉันสนุกกับการเรียนรู้การพัฒนา iPhone ผ่านเครื่องมือของ Apple)

มีหลายสิ่งที่ต้องพิจารณา คุณค่านั้นเป็นนามธรรม หากเรากำลังพูดถึงเรื่องค่าใช้จ่ายและไม่ว่าจะคุ้มหรือไม่คำตอบก็มาถึงรายการหัวข้อย่อยแรกของฉัน: ถ้าเป็นเพื่อธุรกิจและถ้าคุณสามารถหางานได้คุณจะทำเงินของคุณทันที

ดังนั้น ... มันเป็นเรื่องเกี่ยวกับเป้าหมายเท่าที่ฉันจะเป็นได้ นี่คือรายการสั้น ๆ ของสิ่งที่คุณอาจถามตัวเอง แต่มันเป็นจุดเริ่มต้น

โดยส่วนตัว (ปล่อยความเป็นกลางสักครู่) ฉันรักและใช้ทั้งคู่ และฉันดีใจที่ฉันได้เรียนรู้ Apple stack ก่อน มันง่ายกว่าสำหรับฉันที่จะเริ่มต้นและทำงานกับ MonoTouch เมื่อฉันรู้วิธีของฉันทั่วโลกของ Apple แล้ว อย่างที่คนอื่นพูดคุณจะยังคงร่วมงานกับ CocoaTouch - มันจะอยู่ในสภาพแวดล้อมแบบ. Net

แต่มีมากกว่านั้น คนที่ไม่ได้ใช้ MonoTouch มักจะหยุดที่นั่น - "มันเป็นเสื้อคลุม blah blah blah" - นั่นไม่ใช่ MonoTouch

MonoTouch ให้คุณเข้าถึงสิ่งที่ CocoaTouch มีให้ในขณะที่ให้คุณเข้าถึงสิ่งที่ (ส่วนย่อย) .Net นำเสนอ IDE เป็นบางคนรู้สึกสะดวกสบายมากขึ้น (ฉันเป็นหนึ่งในนั้น) บูรณาการที่ดีขึ้นด้วยตัวสร้างส่วนต่อประสาน และถึงแม้ว่าคุณจะไม่ลืมเรื่องการจัดการหน่วยความจำอย่างสมบูรณ์ แต่คุณก็จะได้รับประโยชน์มากมาย

หากคุณไม่แน่ใจให้คว้าสแต็คของ Apple (ฟรี) แล้วหยิบ MonoTouch eval stack (ฟรี) จนกว่าคุณจะเข้าร่วมโปรแกรม dev ของ Apple ทั้งคู่จะทำงานกับเครื่องจำลองเท่านั้น แต่ก็เพียงพอที่จะช่วยให้คุณทราบว่าคุณชอบโปรแกรมอื่นมากและเป็นไปได้ว่า MonoTouch เหมาะกับคุณหรือไม่มูลค่า $ 399

และอย่าฟังเสียง zealots - พวกเขามักจะเป็นคนที่ไม่ได้ใช้เทคโนโลยีที่พวกเขากำลังต่อต้าน :)


50
ว้าวโรรี่ขอบคุณที่สละเวลาตอบคำถามของฉันอย่างละเอียด จากสิ่งที่ฉันสามารถบอกได้ว่าคุณเป็นคนเดียวที่ใช้ตัวเลือกทั้งสองซึ่งเป็นสิ่งที่ฉันกำลังมองหาคำตอบจาก ฉันจะลองทำทั้งสองอย่างแน่นอน BTW ฉันได้ยินคุณเกี่ยวกับพอดคาสต์ SO ล่าสุดใช่มั้ย สิ่งที่ดี. ขอบคุณอีกครั้ง!
jamesaharvey

17
ขอบคุณสำหรับความคิดเห็น :) ฉันรู้สึกหงุดหงิดกับอาการกระตุกหัวเข่าบางอย่างที่ฉันเคยเห็น ครั้งแล้วครั้งเล่าที่คำถามถูกตอบกลับด้วย "คุณเป็นคนงี่เง่าที่ขี้เกียจที่จะทำพิธีเปิดระบบปลดล็อคครั้งแรก !! ??" ซึ่งไม่มีประโยชน์และดูถูก MonoTouch มีจุดที่หยาบ แต่คนเหล่านั้นมีประวัติอัจฉริยะ MT ก้าวหน้าไปอย่างรวดเร็วและสวยงามขึ้นทุกวัน ฉันพูดว่า: ให้พวกเขาสองสามเดือน พวกเขากำลังระมัดระวังเกี่ยวกับฟีเจอร์ต่าง ๆ แต่ฉันคิดว่าเราจะได้เห็นสิ่งที่ยิ่งใหญ่ ฉันรักสแต็คของ Apple แต่ฉันมีสนามเด็กเล่นอีกตอนนี้ - ว่าเป็นสิ่งที่ดีและฉันหวิว :)
Rory ลท์

4
@Stephan - มันอาจไม่ถูกต้องที่จะบอกว่า "ขาดหายไป" คืออะไร - ฉันสามารถทำงานให้สำเร็จด้วย Cocoa มันเกี่ยวกับ API การทำงานกับสตริงวันที่ XML และอื่น ๆ ทำได้ง่ายขึ้นด้วย. Net Dunno หากคุณคุ้นเคยกับวิธี. Net ในการทำสิ่งเหล่านี้รวมถึงขอบเขตการสนับสนุนของ MonoTouch สำหรับพวกเขา - หากคุณยังไม่ได้ตรวจสอบคุณควรจะลองตรวจสอบดู ฉันไม่ได้ตั้งใจจะบอกว่ามีหลายสิ่งที่คุณไม่สามารถทำได้กับโกโก้ แต่มีหลายสิ่งที่ทำได้ง่ายกว่าด้วย. Net การแยกวิเคราะห์ง่ายขึ้นทั่วกระดาน - คณิตศาสตร์วันที่ง่ายขึ้นทั่วกระดาน - และอื่น ๆ
Rory Blyth

3
นอกจากนี้ยังมีปัญหาของการใช้รหัสของคุณเองใน iPhone / iPad กับ MT เรามีรหัส crypto และรหัสตรรกะทางธุรกิจที่ทำงานบนเซิร์ฟเวอร์และเดสก์ท็อปของเราซึ่งเราสามารถคอมไพล์ด้วย MT และใช้ในแอปไคลเอ็นต์ iOS ของเรา นั่นอาจมีความสำคัญสำหรับบางโครงการ
Monoman

2
สิ่งที่ควรพิจารณาคือความจริงที่ว่าแม้ว่าใบอนุญาตจะมีราคา $ 400 แต่ก็มีการสมัครสมาชิกบำรุงรักษาที่คุณต้องต่ออายุ (ด้วยเหตุผลที่ชัดเจน) ทุก ๆ ปี - $ 250 มันอาจเป็นราคาที่ยุติธรรม แต่ก็ยังมีมูลค่าการพิจารณา
Amc_rtty

62

มีข่าวลือมากมายในบทความนี้จากนักพัฒนาซอฟต์แวร์ที่ไม่ได้ลอง MonoTouch และ Objective-C ดูเหมือนว่าส่วนใหญ่จะเป็นนักพัฒนา Objective-C ที่ไม่เคยลอง MonoTouch

เห็นได้ชัดว่าฉันลำเอียง แต่คุณสามารถตรวจสอบได้ว่าชุมชน MonoTouch มีส่วนร่วมใน:

http://xamarin.com

คุณจะพบบทความมากมายจากนักพัฒนาที่พัฒนาทั้งใน Objective-C และ C #


29
@NSResponder - คุณใช้ MonoTouch หรือไม่ มันเป็นรุ่น v1.x ซึ่งเป็นผลิตภัณฑ์ใหม่และน่าทึ่งอยู่แล้ว ลองก่อนแสดงความคิดเห็น มีการเปลี่ยนแปลงครั้งใหญ่ (การรวมตัวสร้างอินเทอร์เฟซดีกว่าของ Xcode) และมีการเปลี่ยนแปลงเล็กน้อย (เปรียบเทียบวิธี ObjC / Cocoa ในการรับโฟลเดอร์เอกสารของผู้ใช้เมื่อเทียบกับ MT) ฉันยังคงใช้สแต็คของ Apple สำหรับบางสิ่ง แต่ MT นั้นสวยงามและเต็มไปด้วยศักยภาพ อย่างจริงจัง - ลองเลย หรือดูที่วิธีการ API ของโกโก้ได้รับการผูกพัน - คุณไม่ต้องใช้มัน - เพียงไม่ถังขยะการทำงานโดยไม่ต้องเรียนรู้เกี่ยวกับเรื่องนี้
Rory Blyth

ใช่ นอกจากนี้ฟีเจอร์ C # 5.0 ใหม่บางรุ่นยังสร้างรหัสที่สนุกกว่าเมื่อเทียบกับวัตถุประสงค์
harsimranb

39

ดังนั้นคำตอบของคำถามที่คล้ายกันก่อนหน้านี้คือการเรียนรู้ Objective-C (นอกจากนี้อย่าลืมเกี่ยวกับการแก้ไขข้อบกพร่อง)

สิ่งนี้อาจทำให้เกิดความขุ่นเคืองได้ แต่ถ้าพูดตามตรงถ้าคุณจะพัฒนาอย่างจริงจังคุณควรเรียนรู้ Objective-C ไม่ทราบว่า Objective-C ในการพัฒนา iPhone จะเป็นอุปสรรค คุณจะไม่สามารถเข้าใจตัวอย่างมากมาย คุณต้องจัดการกับนิสัยใจคอของ Mono ในขณะที่ถ้าคุณมีความรู้ในการทำงานของ Objective-C คุณจะได้รับประโยชน์มากขึ้นจากเอกสารประกอบแพลตฟอร์ม

โดยส่วนตัวแล้วฉันไม่เข้าใจตำแหน่งที่บอกว่าการเพิ่มปริมาณข้อมูลที่คุณต้องการเพื่อใช้ Mono ในภาษาของแพลตฟอร์ม ดูเหมือนจะค่อนข้างต่อต้านฉัน ฉันคิดว่าถ้านี่เป็นโจทย์ที่มีราคาแพงมาก (การเรียนรู้ภาษาใหม่) มันอาจคุ้มค่าที่จะใช้เวลากับแนวคิดการเขียนโปรแกรมพื้นฐานเพื่อให้การเรียนรู้ภาษาใหม่เป็นข้อเสนอที่ค่อนข้างถูก

ผู้ใช้คนอื่นก็เขียนสิ่งนี้:


ตอนนี้ Monotouch ง่ายขึ้นสำหรับคุณ แต่ยากขึ้นในภายหลัง

ตัวอย่างเช่นจะเกิดอะไรขึ้นเมื่อเมล็ดพันธุ์ใหม่ออกมาคุณต้องทดสอบ แต่ทำลาย MonoTouch ด้วยเหตุผลบางอย่าง

เมื่อผสานกับ Mono ทุกครั้งที่คุณค้นหาแหล่งข้อมูลสำหรับกรอบงานคุณจะต้องแปลใจว่าคุณจะใช้กับ Mono ได้อย่างไร ไบนารีแอปของคุณจะมีขนาดใหญ่ขึ้นเวลาในการพัฒนาของคุณจะไม่เร็วขึ้นมากหลังจากนั้นไม่กี่เดือนใน Objective-C และนักพัฒนาแอปอื่น ๆ จะมีข้อได้เปรียบมากกว่าคุณมากกว่าเพราะพวกเขาใช้แพลตฟอร์มดั้งเดิม

ข้อควรพิจารณาอีกประการหนึ่งคือคุณต้องการใช้ C # เพราะคุณคุ้นเคยกับภาษามากกว่า Objective-C แต่ส่วนใหญ่ของเส้นโค้งการเรียนรู้สำหรับ iPhone ไม่ใช่ Objective-C มันเป็นกรอบ - ซึ่งคุณจะต้องโทรหาด้วย C # เช่นกัน

สำหรับแพลตฟอร์มใด ๆ คุณควรใช้แพลตฟอร์มที่แสดงออกถึงปรัชญาการออกแบบของแพลตฟอร์มนั้นโดยตรงบน iPhone นั่นคือ Objective-C ลองคิดถึงเรื่องนี้จากมุมมองย้อนกลับหากนักพัฒนา Linux เคยใช้เขียนโปรแกรมใน GTK ต้องการเขียนแอพ Windows คุณจะแนะนำอย่างจริงจังว่าพวกเขาจะไม่ใช้ C # และติดกับ GTK เพราะเป็นเรื่องที่ "ง่ายกว่า" สำหรับพวกเขา



12
คุณอาจเข้าใจผิด MT ที่ไม่ได้ตั้งใจ ไม่ใช่ทุกอย่าง - ไม่ใช่จากระยะไกล - น่าใช้ GTK ในการเขียนแอป Win การผูกของ MT นั้นซื่อสัตย์ต่อ CocoaTouch มาก พวกเขาได้รับการปรับปรุงจริง ๆในอนุสัญญา CT API บางส่วน แต่คุณไม่ได้เขียนแอพของคุณโดยใช้เป็นนามธรรมที่ใช้ Windows Forms บน CT MT กับ MonoDevelop มีการรวมกับ IB ได้ดีกว่า Xcode (ถ้าคุณต้องการ) และคุณสามารถทำสิ่งเดียวกันในครึ่งรหัสหรือน้อยกว่า กำลังปรับปรุงขนาดไบนารีและเครื่องมือ (ตัวสร้างการผูก ฯลฯ ) จะดีขึ้นตลอดเวลา แอพ MT เป็นแอพพื้นฐาน
Rory Blyth

7
เพื่อให้ตัวอย่างแทนที่จะคาดหวังว่าคุณจะรับความเห็นจาก MT-fanboy ด้วยตัวเองฉันสามารถทำสิ่งต่าง ๆ เช่น (และนี่เป็นเพียงข้อได้เปรียบเล็ก ๆ น้อย ๆ ): สร้างคุณสมบัติที่มีหนึ่งบรรทัด คว้าการอ้างอิงไปยังโฟลเดอร์เอกสารโดยไม่ต้องมีอาร์เรย์ spelunking ที่ไร้สาระ (แอปมีโฟลเดอร์หนึ่งเอกสารเสมอในที่เดียวกัน - ทำไมงานพิเศษทั้งหมดเพื่อ "ค้นหา" มัน?); ใช้. Net framework ที่ Cocoa มีกลิ่นเหม็น (NSDate, any?); ใช้ทักษะสินค้าสำหรับแอพองค์กร ใช้บิต XML ที่เหมาะสมและทันสมัย ​​(ฉันชอบเมื่อ Cocoa ฉายแสงบนตัวละครอย่างเงียบ ๆ และก็หยุด - ไม่ผิดพลาด - แค่หยุด )
Rory Blyth

8
ไม่ได้บอกว่าฉันจะใช้มันทุกอย่าง ฉันชอบ ObjC และยังคงใช้มัน และหากประสิทธิภาพเป็นปัญหาฉันมีการควบคุมที่ละเอียดยิ่งขึ้นว่าเกิดอะไรขึ้น แต่ ... มีบางครั้งที่ MT จะเข้าท่ามากขึ้นและฉันคิดว่ามันจะทำให้ iPhone เป็นตัวเลือกที่ทำงานได้สำหรับการพัฒนาองค์กร โยนก้อนหินขึ้นกลางอากาศแล้วคุณจะชน. dev บริษัท ส่วนใหญ่ไม่มี Devj ของ ObjC ใน บริษัท และสำหรับการทำงานระดับองค์กรพวกเขาไม่ควรจะต้องทำ MT นั้นง่ายกว่ามากสำหรับการทำงานกับเว็บเซอร์วิสและ DB คุณสามารถเขียนแอพพลิเคชั่นมากมายด้วย MT โดยใช้รหัสครึ่งหนึ่งใน ObjC
Rory Blyth

8
ในที่สุด (ฉันสามารถไป แต่ฉันคิดว่าฉันทำจุด mt) การเปลี่ยนแปลงที่ "หยุด" MonoTouch อาจเป็นไปได้ที่จะทำลายแอพ ObjC เมื่อแอพของคุณอยู่ในสโตร์ก็เป็นแอป iPhone ดั้งเดิม (ต้องเป็น) ในที่สุดการโทรก็ไม่ต่างกัน - รันไทม์เช่นเดียวกับแอพที่สร้างด้วยสแต็คของ Apple หากแอป MT ของคุณแตกเนื่องจากการเปลี่ยนแปลงของสภาพแวดล้อมรันไทม์ดังนั้นแอปที่สร้างขึ้นด้วย ObjC และทีม MT ก็อยู่เหนือสิ่งนี้ปล่อยการอัปเดตและแก้ไขข้อผิดพลาดได้อย่างรวดเร็ว การเชื่อมโยงของ MT นั้นทำแผนที่อย่างใกล้ชิดกับ CT เพื่อให้โอกาสในการเกิดปัญหาจริงนั้นอยู่ในระดับต่ำ Aight - ฉันจะปิดตอนนี้ :)
Rory Blyth

27

การใช้โมโนไม่ได้เป็นไม้ค้ำ มีหลายสิ่งที่เพิ่มเข้ากับระบบปฏิบัติการ iPhone LINQ, WCF, รหัสที่สามารถแชร์ได้ระหว่างแอป Silverlight, หน้า ASP.NET, แอพ WPF, แอพ Windows Form และยังมีโมโนสำหรับ Android และจะใช้งานได้กับ Windows Mobile เช่นกัน

ดังนั้นคุณสามารถใช้เวลาเขียน Objective-C (คุณจะเห็นจากการศึกษาจำนวนมากที่โค้ดตัวอย่างเดียวกันใน C # นั้นมีความสำคัญน้อยกว่าการเขียนมากกว่า OC) จากนั้นทำซ้ำมันสำหรับแพลตฟอร์มอื่น ๆ สำหรับฉันฉันเลือก MonoTouch เพราะแอพ Cloud ที่ฉันกำลังเขียนจะมีอินเทอร์เฟซมากมาย iPhone เป็นเพียงหนึ่งในนั้น การมีสตรีมข้อมูล WCF จากคลาวด์ไปยังแอพ MonoTouch นั้นง่ายมาก ฉันมีไลบรารีหลักที่ใช้ร่วมกันระหว่างแพลตฟอร์มต่าง ๆ แล้วต้องเขียนเลเยอร์การนำเสนออย่างง่ายสำหรับการปรับใช้ iPhone / WinMobile / Android / SilverLight / WPF / ASP.NET การสร้างใหม่ทั้งหมดใน Objective-C จะเป็นการเสียเวลามหาศาลทั้งสำหรับการพัฒนาครั้งแรกและการบำรุงรักษาเนื่องจากผลิตภัณฑ์ยังคงเดินหน้าต่อไปเนื่องจากการทำงานทั้งหมดจะต้องทำซ้ำแทนที่จะนำมาใช้ซ้ำ

คนที่ดูถูก MonoTouch หรือพูดหยาบคายว่าผู้ใช้งานต้องใช้ไม้ยันรักแร้กำลังขาดภาพใหญ่ของความหมายของการมี. NET Framework อยู่ที่ปลายนิ้วของคุณและอาจไม่เข้าใจการแยกตรรกะที่เหมาะสมจากการนำเสนอในลักษณะที่ สามารถนำกลับมาใช้ซ้ำได้ในทุกแพลตฟอร์มและอุปกรณ์

Objective-C นั้นน่าสนใจและแตกต่างจากภาษาทั่วไปมากมาย ฉันชอบความท้าทายและการเรียนรู้วิธีการที่แตกต่างกัน ... แต่ไม่ใช่เมื่อทำเช่นนั้นขัดขวางความก้าวหน้าของฉันหรือสร้างการเข้ารหัสซ้ำที่ไม่จำเป็น มีบางสิ่งที่ยอดเยี่ยมเกี่ยวกับกรอบการทำงานของ iPhone SDK แต่ความยอดเยี่ยมทั้งหมดได้รับการสนับสนุนอย่างเต็มที่จาก MonoTouch และตัดการจัดการหน่วยความจำแบบแมนวลทั้งหมดลดจำนวนรหัสที่ต้องใช้ในการทำงานเดียวกันช่วยให้ฉันสามารถใช้ชุดประกอบของฉัน เปิดตัวเลือกของฉันไว้เพื่อให้สามารถย้ายไปยังอุปกรณ์และแพลตฟอร์มอื่น ๆ ได้


19

ฉันเปลี่ยน Monotouch ให้ฉันเขียนแอปอย่างเร็ว 3-4 ครั้งเร็ว ๆ (4 แอพต่อเดือนเมื่อเทียบกับแอพเก่าของฉัน 1 ต่อเดือนใน Obj C)

พิมพ์น้อยลงเยอะ

เพียงแค่ประสบการณ์ของฉัน


2
"4 แอพต่อเดือน" - เมื่อปริมาณมีความสำคัญมากกว่าเช่นคุณภาพ MT ก็เหมือน McDonalds แต่คุณจะได้รับอาหารที่ดีกว่าที่ XCode-Restaurant
netshark1000

2
แม้ว่าผลลัพธ์จะพูดแตกต่างกัน Rdio และ iCircuit เป็นแอพ MT ที่สาธิตโดย Steve Jobs C # และ MT กำจัดงานประปาที่ obj-C บังคับให้คุณทำ
Ian Vink

17

หากนี่เป็นแอพ iPhone เดียวที่คุณจะพัฒนาและคุณไม่มีความสนใจในการพัฒนาแอพพลิเคชั่น Mac เลย MonoTouch น่าจะคุ้มค่ากับการลงทุน

หากคุณคิดว่าคุณจะพัฒนาแอพ iPhone มากขึ้นหรือต้องการพัฒนาเครื่อง Mac ของตัวเองมันอาจคุ้มค่าที่จะเรียนรู้ Objective-C และเฟรมเวิร์กที่เกี่ยวข้อง นอกจากนี้หากคุณเป็นโปรแกรมเมอร์ประเภทที่สนุกกับการเรียนรู้สิ่งใหม่มันเป็นกระบวนทัศน์ใหม่ที่สนุกสำหรับการศึกษา


6
หากนี่เป็นแอพของ iPhone เดียวที่คุณจะพัฒนาตัวเองราคา $ 99 / ปีไม่คุ้มค่า
ไดน่า

คุณสามารถใช้เครื่องมือ C # develppment เดียวกันเพื่อสร้างแอป Mac ในความเป็นจริงคุณสามารถใช้รหัสร่วมกันระหว่างแอป iPhone C # และ Mac C # MonoTouch ได้รับการขนานนามว่า Xamarin
Ian Vink

9

โดยส่วนตัวฉันคิดว่าคุณจะมีเวลาที่ดีกว่าเพียงแค่เรียนรู้ Objective-C

ในระยะสั้น:

  • "Learning Objective-C" ไม่ใช่เรื่องน่ากลัวอย่างที่คุณคิดคุณอาจจะสนุกไปกับมันในช่วงสองสามสัปดาห์แรก
  • คุณคุ้นเคยกับไวยากรณ์ "สไตล์ C" ที่มี * & () {}; ทุกที่
  • Apple ทำได้ดีมากในการทำเอกสาร
  • คุณจะโต้ตอบกับ iPhone ตามที่ Apple ตั้งใจซึ่งหมายความว่าคุณจะได้รับประโยชน์โดยตรงจากแหล่งที่มาไม่ใช่ผ่านตัวกรองบางตัว

ฉันได้พบว่าโครงการอย่าง Unity และ MonoTouch ควรที่จะ "ช่วยคุณประหยัดเวลา" แต่ในที่สุดคุณจะต้องเรียนรู้ภาษาเฉพาะโดเมนของพวกเขาต่อไปและจะต้องทำสิ่งต่างๆ สิ่งที่อาจทำให้คุณต้องเรียนรู้ภาษาที่คุณพยายามหลีกเลี่ยงการเรียนรู้ (ในเวลาตามปฏิทิน) ในท้ายที่สุดคุณไม่ได้ประหยัดเวลาและคุณได้เชื่อมโยงกับผลิตภัณฑ์อย่างแน่นหนา

แก้ไข: ฉันไม่เคยหมายถึงการลบสิ่งใดเกี่ยวกับ. NET ฉันเป็นแฟนตัวยงของมัน ประเด็นของฉันคือการเพิ่มความซับซ้อนมากขึ้นเพียงเพราะคุณยังไม่คุ้นเคยกับสัญกรณ์วงเล็บเหลี่ยมที่เล่นโวหารไม่ได้มีเหตุผลสำหรับฉัน

อัพเดต 2019: 7 ปีต่อมา ฉันยังรู้สึกแบบเดียวกันถ้าไม่มาก แน่นอนว่า 'ภาษาเฉพาะโดเมน' อาจเป็นคำที่ไม่ถูกต้องในการใช้งาน แต่ฉันยังเชื่อว่าการเขียนโดยตรงสำหรับแพลตฟอร์มที่คุณกำลังทำงานด้วยและหลีกเลี่ยงเลเยอร์และ abstractions ที่เข้ากันได้มากที่สุด หากคุณกังวลเกี่ยวกับการนำโค้ดกลับมาใช้ซ้ำและทำงานซ้ำโดยทั่วไปแล้วการพูดฟังก์ชั่นใด ๆ ที่แอพพลิเคชั่นข้ามแพลตฟอร์มของคุณต้องการดำเนินการอาจทำได้ด้วยเทคโนโลยีเว็บที่ทันสมัย


12
ก่อนอื่น C # ไม่ใช่ "ภาษาเฉพาะโดเมน" - ห่างไกลจากมัน มันเป็นทักษะของสินค้า นั่นเป็นส่วนหนึ่งของคุณค่าของ MonoTouch มันอาจเป็นที่ถกเถียงกัน (อย่างไม่ยุติธรรมและไม่ถูกต้อง) ว่า ObjC เป็น DSL ใน devs นั้น (นอกห้องปฏิบัติการทางการเงินและมหาวิทยาลัยและห้องใต้ดิน) ส่วนใหญ่จะใช้เพื่อการพัฒนา OS X หรือ iPhone เท่านั้น แต่มันไม่ใช่ เช่น C # เป็นภาษาที่หลากหลายที่มีอยู่โดยทั่วไปเพื่อให้คุณมุ่งเน้นไปที่กรอบงานมากกว่าภาษาเอง (ฉันคิดว่าเราเห็นด้วยที่นั่น) แต่โปรดจำไว้ว่ารหัสObjCของคุณจะแตกออกด้วยการอัปเดตของ Apple นั่นไม่ใช่ปัญหาเฉพาะของ MT
Rory Blyth

3
MT สามารถช่วยคุณได้ในบางกรณีเพราะมีเลเยอร์นามธรรม Apple ดัดแปลง API หรือไม่ แอป ObjC ของคุณและแอป MT ที่เทียบเท่าของคุณ (สมมติว่ามีอยู่) จะพัง ทีมงาน MT สามารถปล่อยโซลูชัน stopgap เพื่อแก้ไขวิธีที่ MonoTouch API จัดการกับการโทรที่อยู่เบื้องหลัง รหัส MT ของคุณไม่จำเป็นต้องเปลี่ยนแปลง - คุณสามารถสร้างใหม่กับรุ่น MT ของ stopgap ใช่: นี่เป็นการแก้ไขที่สกปรกซึ่งอาจนำไปสู่ปัญหาได้อย่างง่ายดาย แต่การเลิกใช้ stopgap MT API อย่างถูกต้องจะให้เวลา devs เพื่อจัดการกับการเปลี่ยนแปลงอย่างราบรื่นและซื้อเวลาสำหรับการแก้ไขจริง
Rory Blyth

4
นอกจากนี้ใหม่เช่นเดียวกับ MT คือมันง่ายกว่ามากในการสร้างการผูกของคุณเองหากจำเป็น (MT 1.2) คุณไม่ได้พึ่งพา MT peeps อย่างเต็มที่ในการทำงานทุกอย่าง (แม้ว่าพวกเขากำลังทำงานอยู่) และไม่เคยเป็นเช่นนั้น พวกเขามีวิธีที่เรียบง่ายในการสร้างการผูก พวกเขาเปิดเผยเพียงพอของรันไทม์ ObjC ด้วยเฟรมเวิร์ก MT ที่คุณไม่ได้ล็อคในการทำสิ่งต่าง ๆ ฉันได้ปรับปรุงการเชื่อมใหม่เพื่อดูว่าฉันชอบวิธีของฉันดีขึ้นหรือไม่ คุณสามารถละเว้นเฟรมเวิร์ก MT และส่งและรับข้อความ "ด้วยตนเอง" ถ้าคุณต้องการและใช้รหัสน้อย พวกเขาเป็นคนฉลาด ความไว้วางใจพวกเขา :)
Rory ลท์

2
ฉันคิดว่า slf ไม่ได้ตระหนักถึงความจริงที่ว่า Monotouch เป็นเพียง C # (กับ GC) ที่ผูกกับไลบรารี ObjC โดยตรง + ไลบรารี. NET ทางเลือก ดังนั้นคุณยังคงใช้ API ที่แอปเปิ้ลเตรียมไว้ให้ แต่ด้วยไวยากรณ์ของ neater และการรวบรวมขยะ
basarat

4

เพื่อเพิ่มสิ่งที่ผู้อื่นพูดไปแล้ว (ดี!): ความรู้สึกของฉันคือการที่คุณเพิ่มจำนวนข้อบกพร่องที่คุณต้องกังวลเป็นสองเท่า การอัพเดทเวอร์ชั่นใหม่จะเจ็บปวดมากกว่าปกติ Yuck รอบตัว

สิ่งเดียวที่น่าสนใจที่ฉันเห็นสำหรับ MonoTouch คือองค์กรที่มีโปรแกรมเมอร์ C # และรหัส C # อยู่มากมายซึ่งพวกเขาต้องใช้ประโยชน์จาก iPhone (ประเภทของร้านค้าที่จะไม่กระพริบที่ $ 3,500)

แต่สำหรับทุกคนที่เริ่มต้นจากศูนย์ฉันไม่สามารถเห็นว่าคุ้มค่าหรือฉลาด


-1: คุณหมายถึง "ข้อบกพร่องมากขึ้น" หมายความว่าอย่างไร มีความต้านทานที่ไม่เหมาะสมระหว่าง Mono กับ Objective-C หรือไม่?
Jim G.

4

สามคำ: Linq ถึง SQL

ใช่มันคุ้มค่ากับเงินดอลลาร์


4
ด้วยการเชื่อมโยงคีย์ - ค่าของ Objective-C และ Core Data คุณจะได้รับสิ่งที่คล้ายกับ Linq-to-SQL ไม่เหมือนกัน. อาจไม่ทรงพลังเท่าไรนัก แต่ก็ครอบคลุมพื้นที่เดียวกันมากมาย โปรดทราบว่า MonoTouch ไม่รองรับ Core-Data ในขณะนี้
philsquared

Linq กับ SQL เกี่ยวข้องกับแอพ iPhone หรือไม่? มันทำงานร่วมกับ SQLite ได้ไหม?
bpapa

1
และคุณต้องการให้ผู้ใช้ของคุณแชร์ข้อมูลผ่านเครือข่าย คุณกำลังทำอะไรกับ SQL lite
ไบรอัน

"MonoTouch สร้างจากโปรไฟล์ไฮบริด. NET 2.0 และ Silverlight 2 API" รองรับ LINQ กับวัตถุหรือไม่
Chris S

2

บางสิ่งที่ฉันต้องการเพิ่มถึงแม้ว่าจะมีคำตอบที่ยอมรับได้ - ใครจะบอกว่า Apple จะไม่ปฏิเสธแอพที่มีสัญญาณของการสร้างด้วย Mono Touch?


พวกเขาควรและพวกเขาควรปฏิเสธแอพ Flash แต่เงื่อนไข App Store ของพวกเขาไม่ได้ห้ามการใช้งาน
NSResponder

3
@bpapa - เป็นข้อกังวลที่ถูกต้อง แต่: 1) ไม่มีเหตุผลที่จะปฏิเสธแอป (ผู้ใช้ไม่สนใจว่าแอพของพวกเขาเขียนด้วยอะไร - พวกเขาสนใจแอพด้วยตัวเอง) และ 2) MonoTouch มีศักยภาพมากมาย สำหรับการพัฒนาองค์กรและตราบใดที่คุณมีบัญชี dev องค์กรแอปเปิ้ลไม่สามารถหยุดคุณจากการกระจายแอพของคุณ Apple ยอมรับเกมที่สร้างด้วย Unity ท้ายที่สุด MT ก็ปฏิบัติตามกฎ กระบวนการของ Apple ดูเหมือนจะสุ่มตลอดเวลา แต่ ... MT ปฏิบัติตามกฎ: |
Rory Blyth

1
@bpapa - ไม่ทราบว่าฉันพลาดความคิดเห็นนี้ไปได้นานแค่ไหน แต่: 1) แอพจำนวนมากของ ObjC จะได้รับการ "จับ" สำหรับการใช้ API ที่ไม่มีเอกสาร ("ส่วนตัว") - FB ตามที่คุณบันทึกไว้ว่าเป็นหนึ่งในนั้น FB ยังมีชีวิตอยู่และพร้อมให้ดาวน์โหลด 2) ปัญหาของ Unity ได้รับการแก้ไขอย่างรวดเร็วและ Unity กลับมาที่นั่นอีกครั้ง - เท่าที่ Apple ต้องการให้คุณใช้สิ่งของของตัวเองฉันไม่เห็นด้วย แต่ความต้องการและความต้องการนั้นแตกต่างกันอย่างมากมาย สำหรับแอพระดับองค์กร: คุณสามารถปรับใช้แอพองค์กรขนาดใหญ่ได้ พวกมันเป็นแค่ไบนารีพื้นเมือง ฉันไม่เห็นปัญหาและฉันไม่เข้าใจว่าทำไมคุณถึงต่อต้านโปรแกรม MT
Rory Blyth

1
ฉันควรเพิ่มว่าไม่ใช่ว่าฉัน "เกลียด" ไวยากรณ์ของ ObjC แต่ฉันชอบ C # มาก ฉันชอบวิธี. กรอบการทำงานของ Cocoa การจัดการสตริงการประมวลผล XML สิ่งใด ๆ ที่เกี่ยวข้องกับวันที่ ฯลฯ ฉันจะใช้การผูก MT CocoaTouch สำหรับงาน UI แต่สำหรับงานอื่น ๆ ส่วนใหญ่ของเซ็ตย่อยของกรอบงาน. Net ที่มาพร้อมกับ MT ทำให้ชีวิตง่ายขึ้น ฉันสามารถไปเรื่อย ๆ(เช่นการตั้งค่าของฉันสำหรับการค้นหาข้อบกพร่องบางอย่างในเวลารวบรวม ) ฉันวิจารณ์สแต็คของ Apple แต่ฉันไม่ชอบ เป็นไปได้ที่จะชอบ MT และ ObjC / etc
Rory Blyth

1
Apple เปลี่ยนใจและตอนนี้ก็ยอมรับแอพในภาษาใด ๆ / กรอบงานและกำหนดเกณฑ์ 'วัตถุประสงค์' เพิ่มเติมสำหรับการยอมรับแอพในร้าน
Monoman

2

ฉันจะลงทุนเวลาใน Objective-C เป็นหลักเพราะความช่วยเหลือทั้งหมดที่คุณได้รับจากเว็บไซต์เช่นนี้ หนึ่งในความแข็งแรงเป็นของ Objective-C คือการที่คุณสามารถใช้ C และ C ++ รหัสและมีเป็นจำนวนมากของโครงการออกมีที่จะทดสอบอย่างดี

อีกสิ่งหนึ่งคือรหัสของคุณ (ภาษาที่เลือก) จะได้รับการสนับสนุนจาก Apple อินสแตนซ์ iOS 5.x คืออะไรเอาการสนับสนุนสำหรับโซลูชันของบุคคลที่สามอย่าง MonoTouch แล้วคุณจะบอกอะไรลูกค้าของคุณ?

อาจจะดีกว่าถ้าใช้โซลูชันแพลตฟอร์มอิสระเช่น HTML5 ถ้าคุณยังไม่พร้อมที่จะย้ายไปยัง Objective-C


ฉันพบข้อโต้แย้งว่าด้วยการใช้ MonoTouch คุณจะถูกล็อคเป็นผู้จำหน่ายที่ Apple อาจหยุดให้ / สนับสนุนที่แข็งแกร่งมาก คุณสามารถลงทุนในแพลตฟอร์มที่อยู่ในความเมตตาของ Apple ที่มีแพลตฟอร์มการพัฒนาของตัวเองอยู่แล้ว ...
jl

2

ฉันใช้ MonoTouch มาสองสามเดือนแล้วตอนนี้ฉันย้ายแอพครึ่งที่เสร็จแล้วจาก ObjectiveC เพื่อที่ฉันจะสามารถรองรับ Android ได้ในอนาคต

นี่คือประสบการณ์ของฉัน:

บิตที่ไม่ดี:

  • Xamarin Studio ผู้พัฒนาอินดี้เช่นตัวเองถูกบังคับให้ใช้ Xamarin Studio จะดีขึ้นทุกสัปดาห์นักพัฒนาใช้งานมากในฟอรัมระบุและแก้ไขข้อบกพร่อง แต่ก็ยังช้ามากบ่อยแฮงค์มีข้อบกพร่องมากมายและการดีบักค่อนข้างช้าเช่นกัน

  • สร้างครั้ง การสร้างแอปขนาดใหญ่ของฉัน(เชื่อมโยง) เพื่อแก้ไขข้อบกพร่องบนอุปกรณ์อาจใช้เวลาสองสามนาทีซึ่งเทียบกับ XCode ซึ่งปรับใช้แทบจะในทันที สิ่งปลูกสร้างสำหรับเครื่องจำลอง (ไม่เชื่อมโยง) นั้นเร็วกว่าเล็กน้อย

  • ปัญหา MonoTouch ฉันเคยประสบปัญหาเรื่องการรั่วไหลของหน่วยความจำที่เกิดจากการจัดการเหตุการณ์และต้องแก้ไขปัญหาที่น่าเกลียดเพื่อป้องกันการรั่วไหลเช่นการแนบและแยกเหตุการณ์เมื่อเข้าและออกจากมุมมอง นักพัฒนา Xamarin กำลังมองหาปัญหาเช่นนี้

  • ห้องสมุดบุคคลที่สาม ฉันใช้เวลาค่อนข้างนานในการแปลง / ผูกไลบรารี่ ObjectiveC เพื่อใช้ในแอพของฉันแม้ว่ามันจะเริ่มดีขึ้นด้วยซอฟต์แวร์อัตโนมัติเช่น Objective Sharpie

  • ไบนารีที่ใหญ่ขึ้น มันไม่ได้รบกวนฉัน แต่คิดว่าฉันจะพูดถึงมัน IMO สองสาม Mb พิเศษไม่มีวันนี้

บิตที่ดี:

  • หลายแพลตฟอร์ม เพื่อนของฉันกำลังสร้างแอพเวอร์ชัน Android ของฉันอย่างมีความสุขจากฐานรหัสหลักของฉันเรากำลังพัฒนาแบบคู่ขนานและมุ่งมั่นที่จะใช้ที่เก็บ Git ระยะไกลบน Dropbox มันเป็นไปได้ด้วยดี

  • .สุทธิ. การทำงานใน C # .Net นั้นดีกว่า Objective C IMO มาก

  • MonoTouch ทุกสิ่งทุกอย่างใน iOS นั้นได้รับการสะท้อนใน. Net และมันก็ค่อนข้างตรงไปตรงมา

  • Xamarin คุณจะเห็นได้ว่าคนพวกนี้ทำงานอย่างหนักเพื่อปรับปรุงทุกอย่างทำให้การพัฒนาราบรื่นขึ้นและง่ายขึ้น

ฉันขอแนะนำ Xamarin สำหรับการพัฒนาข้ามแพลตฟอร์มโดยเฉพาะอย่างยิ่งถ้าคุณมีเงินที่จะใช้รุ่น Business หรือ Enterprise ที่ทำงานกับ Visual Studio

หากคุณเพียงสร้างแอพ iPhone ที่ไม่เคยต้องการบนแพลตฟอร์มอื่นและคุณเป็นนักพัฒนาอินดี้ฉันจะใช้ XCode และ Objective C ในตอนนี้


การอัปเดตด่วนสำหรับคำตอบของฉันด้านบน ตั้งแต่เปลี่ยนมาใช้ Mac ที่เร็วขึ้นฉันพบว่าเวลาในการสร้างนั้นเร็วกว่ามากมันก็ยังไม่ได้เป็นอย่าง XCode แต่มันก็ดี
danfordham

1

ในฐานะคนที่มีประสบการณ์ทั้ง C # และ Objective-C ฉันจะบอกว่าคนส่วนใหญ่ Xamarin จะคุ้มค่ากับเงินที่จ่ายไป

C # เป็นภาษาที่ออกแบบได้ดีมากและ C # API นั้นได้รับการออกแบบที่ดีเช่นกัน แน่นอนว่า Cocoa Touch API (รวมถึง UIKit) นั้นมีการออกแบบที่ยอดเยี่ยมเช่นกัน แต่ภาษาก็สามารถพัฒนาได้หลายวิธี เมื่อเขียนใน C # คุณจะมีประสิทธิผลมากกว่าเมื่อเปรียบเทียบกับการเขียนโค้ดเดียวกันใน Objective-C นี่คือสาเหตุหลายประการ แต่บางเหตุผลจะ:

  • C # มีอนุมานชนิด การอนุมานประเภททำให้การเขียนโค้ดเร็วขึ้นเนื่องจากคุณไม่จำเป็นต้อง "รู้" ประเภททางด้านซ้ายของการบ้าน นอกจากนี้ยังทำให้การปรับโครงสร้างใหม่ง่ายขึ้นและประหยัดยิ่งขึ้น

  • C # มีข้อมูลทั่วไปซึ่งจะลดข้อผิดพลาดเมื่อเทียบกับรหัส Objective-C ที่เทียบเท่า (แม้ว่าจะมีการแก้ไขบางอย่างใน Objective-C ในสถานการณ์ส่วนใหญ่ผู้พัฒนาจะหลีกเลี่ยงพวกเขา)

  • เมื่อเร็ว ๆ นี้ Xamarin ได้เพิ่มการรองรับAsync / Awaitซึ่งทำให้การเขียนโค้ดแบบอะซิงโครนัสง่ายมาก

  • คุณจะสามารถนำรหัสฐานมาใช้ใหม่บน iOS, Android และ Windows Phone ได้

  • MonoTouch ส่วนใหญ่ใช้ CocoaTouch API อย่างตรงไปตรงมามาก ตัวอย่าง: หากคุณมีประสบการณ์กับ CocoaTouch คุณจะรู้ว่าจะหาชั้นเรียนสำหรับการควบคุมใน MonoTouch ได้อย่างไร (MonoTouch.UIKit มีคลาสสำหรับ UIButton, UIView, UINavigationController และอื่น ๆ เช่นเดียวกัน MonoTouch.Foundation มีคลาสสำหรับ NSString NSData ฯลฯ ... )

  • Xamarin จะให้ประสบการณ์ผู้ใช้ที่แตกต่างจากโซลูชันอย่าง PhoneGap หรือ Titanium

ตอนนี้ Objective-C มีข้อได้เปรียบเหนือ C # แต่ในสถานการณ์ส่วนใหญ่การเขียนแอพใน C # โดยทั่วไปจะส่งผลให้เวลาในการพัฒนาน้อยลงและโค้ดที่สะอาดและทำงานน้อยลงในการย้ายแอพเดียวกันไปยังแพลตฟอร์มอื่น ข้อยกเว้นที่โดดเด่นอย่างหนึ่งอาจเป็นเกมที่มีประสิทธิภาพสูงที่ต้องใช้ OpenGL


-35

ค่าใช้จ่ายของห้องสมุด MonoTouch อยู่ด้านข้างทั้งหมด เหตุผลที่คุณไม่ควรใช้ Mono สำหรับแอพ iPhone ของคุณนั่นคือ crutch หากคุณไม่สามารถใส่ใจกับการเรียนรู้เครื่องมือพื้นฐานได้ฉันก็ไม่มีเหตุผลที่จะเชื่อว่าผลิตภัณฑ์ของคุณคุ้มค่าสำหรับการดาวน์โหลด

แก้ไข: 4/14/2010 แอปพลิเคชันที่เขียนด้วย MonoTouch จะไม่มีสิทธิ์ใช้ iTunes Store นี่คือตามที่ควรจะเป็น Apple เห็นพอร์ตตื้น ๆ มากมายบน Mac โดยใช้ชุดเครื่องมือข้ามแพลตฟอร์มเช่น Qt หรือ Adobe ที่นำบางส่วนมาใช้ใหม่ในกล่องเครื่องมือ System 7 และที่ยาวและสั้นก็คือมันไม่ดีพอ


14
ส่วนแบ่งการตลาดสำหรับ Mac OS X นั้นเล็กมากดังนั้น iPhone จึงเป็นเหตุผลที่น่าสนใจเพียงข้อเดียวที่ต้องพิจารณาเรื่อง X-Code และ ObjC ทั้งคู่ต่างก็ยอดเยี่ยมเมื่อ 15 ปีที่แล้วเมื่อเป็นตัวสร้างโครงการและข้ามความซับซ้อนของแพลตฟอร์มและบรรจุภัณฑ์ แต่ตรงไปตรงมา - ในฐานะคนที่ใช้ช่วงของแพลตฟอร์ม - ด้วยเครื่องมือและภาษาที่ดีกว่าในตอนนี้ codebase และใช้เครื่องมือพัฒนาทางเลือก ไม่ได้หมายความว่าการสร้างสรรค์ของพวกเขาจะต่ำกว่ามาตรฐาน
34985 Iain Collins

37
ฉันไม่รู้สิเพื่อนฉันคิดว่า Objective-C และ CocoaTouch เป็นไม้ค้ำ หากคุณไม่ได้เขียนแอสเซมบลีฉันจะรู้สึกว่าคุณไม่ได้สนใจอะไรมากและฉันจะไม่ดาวน์โหลดแอพของคุณ (เพราะสิ่งแรกที่ผู้ใช้ทำคือตรวจสอบว่ามีเครื่องมืออะไรบ้าง) เคยสร้างแอปจำลองท้องอืดที่พวกเขากำลังดาวน์โหลดอยู่)
Rory Blyth

3
แอนดรูคุณไม่รู้ว่าคุณพูดอะไร วัตถุประสงค์ -C ไม่ใช่น้ำนิ่ง มันเป็นกระดูกสันหลังของสภาพแวดล้อมการพัฒนาดั้งเดิมสำหรับ Mac, iPhone และ iPad
NSResponder

5
คุณเลือกตัวอย่างง่ายๆของสิ่งที่ Apple สร้างไว้ในเฟรมเวิร์กและอ้างสิทธิ์เหนือกว่าในขณะที่ไม่สนใจส่วนต่างๆของเฟรมเวิร์กที่ไกลเกินกว่า C # เทียบเท่าหรือไม่ นั่นไม่ใช่สิ่งที่เป็นข้อโต้แย้งของชาวฟางเหรอ?
Andrew Rollings

8
ฉันเปลี่ยนเป็น MonoTouch และเผยแพร่ 47 แอพใน 4.0 ด้วย ฉันทำเต็มเวลา ใช้งานได้ดีรวดเร็ว ฉันเคยเขียนใน Objective C แต่หา C # กับ Linq เร็วขึ้นด้วยรหัสน้อยกว่าที่จะเขียน
Ian Vink
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.