MonoTouch ถูกแบนบน iPhone หรือไม่? [ปิด]


155

โพสต์ล่าสุดโดยJohn Gruberบันทึกว่า legalese ต่อไปนี้:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

ได้รับการแก้ไขดังนี้:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

และทำให้การสังเกตต่อไปนี้:

การอ่านภาษาใหม่นี้ของฉันคือห้ามคอมไพเลอร์ข้ามเช่นคอมไพเลอร์ Flash-to-iPhone ใน Adobe Professional CS5 ที่กำลังจะเปิดตัว นอกจากนี้ยังห้ามแอพที่รวบรวมโดยใช้ MonoTouch - เครื่องมือที่รวบรวมแอพ C # และ. NET กับ iPhone

อันที่จริงแล้วสิ่งนี้ห้ามการใช้ Monotouch สำหรับ IPhone หรือไม่?


4
ฉันสงสัยว่าใบนี้ออกจากแอปเปิ้ลและนักพัฒนาโมโนทัชที่มีอยู่อย่างถูกกฎหมายหรือไม่ เกิดอะไรขึ้นกับแอพ Monotouch ที่มีอยู่
PeteT

2
@ petebob796: คุณต้องยอมรับใบอนุญาตใหม่นี้หากคุณต้องการใส่อะไรใหม่ลงใน iTunes Connect แต่ฉันสงสัยว่าพวกเขาจะดึงสิ่งต่าง ๆ จากร้านค้าที่ส่งมาก่อนหน้านี้ อย่างไรก็ตามพวกเขา / อาจ / บังคับใช้สิ่งนี้ด้วยแอพใหม่ที่ไม่ได้ใช้ 4.0 แต่ยังไม่เคยส่งมาก่อน แต่ชอบทุกสิ่งใน App Store เราจะต้องรอดู!
Jason Coco

1
เห็นได้ชัดว่าข้อตกลงดังกล่าวอยู่ภายใต้ NDA
Chris S

apple.com/pr/library/2010/09/09statement.html aaaaaaaaaathankyooooooooooooo ให้ความบ้าคลั่งเริ่มขึ้น !!

2
ในฐานะของ 9/9/2010 นี้เป็น moot Apple กำลังผ่อนคลายกฎ 3.3.2 foxbusiness.com/markets/2010/09/09/…
Steve Mitcham

คำตอบ:


88

อัพเดท -

นี้มีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้ MonoTouch ไม่ควรขัดแย้งกับข้อตกลงอีกต่อไป ข้อความด้านล่างใด ๆ ล้วนเป็นประวัติศาสตร์หมดจด!

ใช่ดูเหมือนว่าจะชัดเจนจากข้อตกลงสิทธิ์การใช้งานของพวกเขาตอนนี้ว่าหากแอปพลิเคชันดั้งเดิมเขียนใน C # ดังนั้นจะเป็นการละเมิดใบอนุญาต:

... แอปพลิเคชันจะต้องถูกเขียนใน Objective-C, C, C ++ หรือ JavaScript ซึ่งดำเนินการโดยเอ็นจิ้น WebKit ของ iPhone OS ...

พวกเขายังใช้ค้อนทุบต่อไปอีกเล็กน้อย:

แอปพลิเคชันที่ลิงก์ไปยัง API เอกสารผ่านการแปลตัวกลางหรือเลเยอร์หรือเครื่องมือที่เข้ากันได้นั้นเป็นสิ่งต้องห้าม

MonoTouch และ Flash CS5 เป็นคนเกียจคร้านตัวแปลง iPhone ที่เจ๋งมาก


7
อย่างไรก็ตามดูtwitter.com/migueldeicaza/status/11844609073โดยใช้สิ่งนั้นพวกเขาจะบอกแอพ MonoTouch จากเจ้าของภาษาได้อย่างไร
Mauricio Scheffer

9
Apple อีกแล้วเหรอ การดูดพวกเราด้วยอุปกรณ์ที่ยอดเยี่ยมส่วนติดต่อแบบกราฟิกที่สะอาดอินเตอร์เฟซระบบสัมผัสที่ดี ... แต่ ... หยุดพวกเราพัฒนาทุกอย่างยกเว้นว่าเรามี mac หยุดการพัฒนาสิ่งใด ๆ เว้นแต่ว่ามันจะเป็นวัตถุ C / C / C ++ ฉันหมายถึงสิ่งที่เราทุกคนจะคิดถ้าไมโครซอฟท์มาพร้อมและพูดว่า 'ไม่ - ไม่สามารถพัฒนาอะไรใน windows เว้นแต่มันจะเป็น C - ไม่มีคุณไม่สามารถใช้. NET Framework อีกต่อไป'
เตอร์

33
มันไม่สมเหตุสมผลสำหรับฉัน ภายใต้ข้อตกลงนี้หากคุณเขียนแอปใน Flash แล้วแปลด้วยมือให้กับ Objective-C ดูเหมือนว่าจะเป็นการละเมิดข้อตกลง (เพราะไม่ใช่ "เขียนเป็นครั้งแรก" ใน Objective-C)
Michael Myers

3
@ จอห์น: ฉันคิดว่ามันน้อยกว่าที่พวกเขากำลัง 'ห้าม' แอปดั้งเดิม - มันยิ่งกว่านั้นระบบปฏิบัติการ API ใหม่ของพวกเขาหมุนรอบ Silverlight / XNA และนั่นเป็นวิธีที่ได้รับการสนับสนุนในการทำ ฉันไม่เห็นสิ่งใดที่จะบังคับให้คุณไม่สามารถเขียน Java (หรือภาษาอื่น ๆ ) ไปยัง Silverlight compiler ในข้อตกลงการอนุญาตใช้สิทธิ์ของ Microsoft (ยัง)
Ron Warholic

3
ผลิตภัณฑ์ของเรากำลังพัฒนาเป็น iPhone / iPad เท่านั้น (ผู้ใส่ใจเกี่ยวกับ Android ฯลฯ ) และใน MonoTouch ตอนนี้เราได้รับการพิจารณาใหม่และเราจะเป็น Obj-C ตามที่ต้องการ แต่เราจะต้องแน่ใจว่ามี Android และ WinPhone รองรับวันที่ 1 ด้วย ธุรกิจไม่สามารถยอมรับพฤติกรรมที่ไม่แน่นอนดังนั้น Apple จึงทำสิ่งที่ตรงกันข้ามกับที่พวกเขาต้องการทำให้นักพัฒนาค้นหาโซลูชันข้ามแพลตฟอร์มแทน Apple เท่านั้น ทำได้ดี.
mj2008

49

ปรับปรุง:

Apple ได้ลดข้อกำหนดด้านเทคนิคทั้งหมดสำหรับภาษาและไลบรารี่สำหรับ iOS ดังนั้นMonoTouch จึงไม่ต้องสงสัยเลยว่าโซลูชันที่ใช้งานได้จริง ดูประกาศแอปเปิ้ล


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

ข้อตกลง Apple เวอร์ชัน 3 (ไม่ใช่ล่าสุดก่อนหน้านี้) ระบุไว้อย่างชัดเจนว่าเป็นการผิดกฎหมายที่จะใช้เฟรมเวิร์กอื่นเพื่อพัฒนาแอปพลิเคชั่นอื่น ๆ

3.3.2 แอปพลิเคชันไม่สามารถติดตั้งหรือเปิดใช้งานโค้ดที่รันได้ด้วยวิธีการใด ๆ รวมถึง แต่ไม่ จำกัด เพียงการใช้สถาปัตยกรรมปลั๊กอินการเรียกเฟรมเวิร์กอื่น API อื่น ๆ หรืออย่างอื่น ไม่สามารถดาวน์โหลดหรือใช้รหัสตีความได้ในแอปพลิเคชันยกเว้นรหัสที่ตีความและดำเนินการโดย API เอกสารของ Apple และล่ามในตัว http://adcdownload.apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf

แม้ว่าจะเป็นกรณีนั้น (และเป็นจริงตั้งแต่ 2.x, apple ไม่มีปัญหาในการยอมรับแอปพลิเคชันที่ทำเช่นนั้นตัวอย่างเช่นเกม EA ทั้งหมดใช้สคริปต์ Lua และผู้คนจำนวนมากใช้ไลบรารีภายนอกที่ ไม่ได้เป็นของ iPhone จริง ๆ แม้ว่า iPhone จะมี API ดั้งเดิม แต่ Apple ก็ไม่เคยมีปัญหาในการยอมรับแอพพลิเคชั่นที่มีเวอร์ชันต่าง ๆ เช่น SQLite

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

นอกจากนี้ยังมีความจริงที่ว่ามีแอพพลิเคชั่นหลายร้อย (หรือหลายพันรายการ) ในสโตร์ที่ใช้งาน Mono อยู่ในขณะนี้และ Apple จะต้องยอมรับการอัพเดตสำหรับแอพเหล่านั้น แอพหลัก ๆ ที่มียอดขายนับล้านถูกสร้างโดยใช้ Mono (และ Lua) และฉันสงสัยว่าพวกเขาจะคืนเงินให้ผู้ใช้ทุกคน

ท้ายที่สุดแอปพลิเคชั่นระดับองค์กรจะถูกปรับใช้กับ iPhone โดยไม่ได้รับการอนุมัติจาก Apple และเป็นตลาดใหญ่ที่ MonoTouch เปิดอยู่ (ฉันพัฒนาแอพองค์กรด้วยตัวเอง) ณ จุดนี้ไม่มีทางที่ Apple สามารถสั่งห้าม MonoTouch สำหรับแอปพลิเคชั่นเหล่านั้นและอาจเพียงพอที่จะทำให้ MonoTouch มีชีวิตอยู่ได้นาน


โดยทั่วไปฉันเห็นด้วยกับคุณยกเว้นในส่วนสุดท้าย - Apple บอกได้อย่างง่ายดายว่าการอัปเดตแอปที่มีอยู่ในอนาคตจะต้องถูกส่งไปยัง Objective-C ดั้งเดิม
Kendall Helmstetter Gelner

แม้ว่าแอพจะถูกส่งไปยัง Obj-C พวกมันถูกเขียนเป็นภาษาอื่นดังนั้นในทางเทคนิคแล้วพวกเขายังคงผิดกฎหมายฉันเดา .. นั่นเป็นเหตุผลว่าทำไมกฎเหล่านี้ไม่สมเหตุสมผลเลย พวกเขาอาจจะล้างมันในการแก้ไขต่อไปนี้ก่อนที่จะเปิดตัว 4.0 ครั้งสุดท้าย
Eduardo Scoz

3
ภาษาก่อนหน้าไม่ได้ห้ามกรอบเลย มันบอกอย่างชัดเจนว่าสิ่งที่ถูกแบนคือการเปิดตัวโค้ดที่สามารถเรียกใช้งานได้และแสดงเฟรมเวิร์กเป็นตัวอย่างหนึ่งของวิธีที่อาจทำได้ ภาษาที่คุณโพสต์ไม่ส่งผลกระทบต่อแอพแบบ monotype หรือแอพ Flash หรือไบนารีที่คอมไพล์แล้วอื่น ๆ ที่ไม่ได้พยายามแปลตอนรันไทม์
fenomas

27

ปรับปรุง:

การเปลี่ยนแปลงใหม่ในส่วน 3.3.1, 3.3.2 และ 3.3.9 ทำให้ MonoTouch (และคอมไพเลอร์ข้ามภาษา / ภาษาอื่น ๆ ทั้งหมด) ยอมรับได้อย่างสมบูรณ์แบบบน iPhone ดูประกาศของ Apple


มิเกลดูเหมือนจะไม่คิดอย่างนั้น ดูทวีตและคำตอบของมิเกลการตอบสนองอย่าให้เกินความจริงที่นี่และบอกว่า Monotouch นั้นตายแล้วหรือหยุดการพัฒนากับ Monotouch จนกว่าทุกฝ่ายที่เกี่ยวข้องจะมีการชี้แจง

ที่กล่าวว่าฉันจะเริ่มวางความร้อนบน Apple สำหรับนโยบายการพัฒนา draconian ดังกล่าว สิ่งต่าง ๆ เช่นนี้และกระบวนการที่คลุมเครือซึ่งเป็นนโยบายการอนุมัติของแอพพลิเคชั่น iphone / ipad / touch ควรทำให้เกิดความกลัวในหัวใจของนักพัฒนา สิ่งถัดไปคือใบอนุญาตของพวกเขาที่ระบุว่าแพลตฟอร์มโฆษณาเดียวที่คุณได้รับอนุญาตให้ใช้คือ iAd ไม่อนุญาตให้เผยแพร่แอปฟรีโดยไม่มี iAd หรือ เพิ่มส่วนแบ่งรายได้จากการขายแอปของ Apple ช้าไหม ในฐานะนักพัฒนาในระบบนิเวศที่ถูกล็อคเราจึงเป็นกบในน้ำร้อนและ Apple ก็ค่อยๆเปลี่ยนความร้อน ขณะนี้เป็นเวลาที่จะสำรวจแพลตฟอร์มมือถืออื่น ๆ เพราะเมื่อพวกเขาดีขึ้นสิ่งสำคัญที่ทำให้ผู้คนเข้าสู่แพลตฟอร์ม Apple คือการขาดแอปพลิเคชันบนแพลตฟอร์มอื่น


4
+1 (โดยเฉพาะอย่างยิ่งสำหรับ "สำรวจแพลตฟอร์มอื่น ๆ ")
ทิม

2
+1 แม้ว่าฉันจะคาดหวังมากขึ้นจากลิงก์เหล่านั้น "ไม่" ไม่บอกมากใช่ไหม ไมโครบล็อกเป็นต้นเหตุของความหายนะ
Dan Rosenstark

ไปสำรวจฉันติดกับ Apple ฉันมี 2 แม็คและใบอนุญาตของนักพัฒนาซอฟต์แวร์ซึ่งฉันยินดีที่จะต่ออายุในปีนี้เพื่อให้ฉันสามารถพัฒนาต่อไปได้ รักหรือปล่อยให้มัน แต่เลิกร้องไห้เกี่ยวกับมัน และเพียงไปซื้อแมคแล้ว ...
kirk.burleson

10

ฉันใช้เวลาหลายเดือนในการทำไอเดียสำหรับแอพนักฆ่า iPhone ใน Objective C งานประจำวันของฉันคือ C # ฉันดาวน์โหลด MonoTouch C # เมื่อมันกลายเป็นทางเลือกที่ใช้งานได้และใช้เวลา 3 เดือนในการแปลงรหัสของฉันเป็น iPhone MonoTouch C # ที่เฉพาะเจาะจง ซึ่งหยุดฉันจะโกรธผ่านการเปลี่ยนจาก C # / วัตถุประสงค์ C

ฉันจะทำยังไงตอนนี้ให้เริ่มต้นใหม่อีกครั้งหรือยอมแพ้!?!

ฉันรู้สึกเสียใจจริง ๆ กับพวกโมโน นี่เป็นสิ่งที่ผิดธรรมดา เป็นสิ่งหนึ่งที่ต้องหยุด Adobe ที่ไม่ได้เปิดตัวผลิตภัณฑ์และไม่มีลูกค้าและหยุด MonoTouch ที่ทำและยังได้อนุมัติผลิตภัณฑ์ใน AppStore ด้วย

ทำไมทุกคนต้องการที่จะสร้างธุรกิจและลงทุนใน Apple เมื่อพวกเขาจะนำมันออกไปในช่วงเวลาที่แจ้งให้ทราบโดยไม่ต้องตอบหรือสงสัย?

เห็นได้ชัดว่านักพัฒนาและลูกค้าของ Apple ดูแลพวกเขาและผลิตภัณฑ์ของพวกเขาเป็นหนทางเดียว


Monotouch ไม่มีผลิตภัณฑ์ที่ได้รับการรับรองในแอพสโตร์ - มีแอพพลิเคชั่นมากมายในแอพสโตร์ที่เขียนโดยใช้โมโน มีความแตกต่างใหญ่คือมีแอปพลิเคชั่นมากมายที่ต้องพิจารณาแทนที่จะเป็นแอพเดียว
Kendall Helmstetter Gelner

@ Kendall Helmstetter Gelner: คุณคิดผิด มีแอพ MonoTouch ในแอพสโตร์
ทิมสก็อตต์

4
@ Tim Scott เขากำลังพูดว่า ... โอ้ลืมไปเลย
Dan Rosenstark

1
คุณต้องพิจารณาระยะเวลาในการพัฒนา Adobe ที่จะใส่เข้าไปใน iPhone คอมไพเลอร์ Apple ปล่อยให้พวกเขาเดินไปตามถนนโดยรู้ว่ากำลังจะเกิดขึ้นนานกว่าหนึ่งปีและในนาทีสุดท้ายก็นำมันออกไป การคิดต้นทุนเป็นล้าน ๆ ครั้งในการพัฒนาและการลดยอดขาย
PeteT

@Tim: และแอปเหล่านั้นพัฒนาโดยคน Monotouch กี่คน? อ่านสิ่งที่ฉันพูดอีกครั้ง @yar: ขอบคุณที่พยายามอธิบาย
Kendall Helmstetter Gelner

9

ฉันหวังว่าแอปเปิ้ลจะได้รับการตีกลับสำหรับนโยบายที่ไร้สาระนี้ ความเย่อหยิ่งไม่น่าดึงดูดและไม่ดีต่อธุรกิจ นี่คือหนึ่งในเหตุผลที่ฉันไม่ได้เริ่มพัฒนา iPhone

ผู้ให้บริการฮาร์ดแวร์และระบบปฏิบัติการส่วนใหญ่ยินดีที่จะมีเครื่องมือและผู้ชมเพิ่มเติมเพื่อเขียนลงในแพลตฟอร์มของพวกเขา Apple กำลังแสดงท่าทีว่าเครื่องมือ (braindead) เป็นเกมเดียวในเมือง

โฆษณา "Big Brother" จาก 1984 มีความเกี่ยวข้องมากขึ้นเรื่อย ๆ ...

แก้ไข

วิธีที่เขียนนั้นดูเหมือนจะบอกเป็นนัยว่าหากฉันเขียน. net ให้กับนักแปล C / apple วัตถุประสงค์ว่ารหัสไม่ได้รับการยอมรับเพราะรหัสดั้งเดิมไม่ใช่วัตถุประสงค์ c นั่นน่าหัวเราะ (และไม่สามารถบังคับใช้ได้)


2
ส่วนที่หยิ่งคืออะไร? คุณคิดว่าพวกเขากำลังทำสิ่งนี้เพราะพวกเขาคิดว่ารหัสของพวกเขาสะอาดกว่าหรืออะไรบางอย่าง?
bpapa

3
คุณกำลังบอกว่ามันไม่หยิ่งเหรอ?
ทิม

4
@bpapa Arrogance ไม่ได้ จำกัด อยู่ที่ปัญหาทางเทคนิค แต่ยังครอบคลุมถึงมุมมองทางธุรกิจด้วย พวกเขาหยิ่งในสิ่งที่พวกเขาคิดว่าพวกเขาสามารถหนีไปได้และเป็นพฤติกรรมที่ยอมรับได้ เพียงเพราะมันอาจเป็น "กลยุทธ์ทางธุรกิจ" ไม่ได้หมายความว่าคุณได้รับการยกเว้นจากการถูกเรียกว่าโง่และหยิ่ง
ทิม

3
ที่จริงแล้วพวกเขาจะ "หนีไป" เพราะอุปกรณ์ iPhone OS จะยังคงประสบความสำเร็จอย่างมากและนักพัฒนาจะพัฒนาต่อไปและผู้พัฒนาใหม่จะเข้าร่วม ฉันเลือกได้สองสามปีที่แล้วฉันสามารถนั่งและบ่นเกี่ยวกับวิธีที่ฉันไม่สามารถพัฒนา Java บน iPhone หรือเรียนรู้ Cocoa Touch และสร้างแอป iPhone อย่าเสียใจในการตัดสินใจของฉัน
bpapa

5
@Ben Um, no - มันเกี่ยวข้องเพราะ Apple IS พี่ใหญ่ ... มันเรียกว่าประชด
ทิม

7

เอกภาพขึ้นอยู่กับโมโนและด้วยความที่เป็นผลิตภัณฑ์เชิงพาณิชย์ขนาดใหญ่ฉันคิดว่านี่เป็นปัญหาที่เรายังไม่ได้ยินตอนจบ

การแบนแอพทั้งหมดที่ไม่ได้เขียนใน Obj-C / C ++ นั้นในทางทฤษฎีแล้วห้ามเกม Unity ทั้งหมดด้วยซึ่งมีจำนวนมากในแอพสโตร์

คำถามนี้ถูกถามไปที่เว็บไซต์ Unity Answers และคำตอบอย่างเป็นทางการของพวกเขาคือ:

“ เราเพิ่งได้ยินเกี่ยวกับ iPhone OS4.0 และข้อกำหนดการให้บริการใหม่ในขณะที่เราเชื่อว่าเราปฏิบัติตามอย่างเต็มที่กับสิ่งเหล่านี้เรากำลังทำทุกอย่างเท่าที่ทำได้เพื่อรับการตรวจสอบโดย Apple ทันทีที่เรารู้อย่างแม่นยำ แน่นอนว่าเราจะแบ่งปันข้อมูลนั้นกับทุกคนโปรดแขวนไว้ในขณะที่เราจัดการเรื่องนี้ "

สนใจดูสิ่งที่พวกเขาได้รับการบอกเล่าจาก Apple

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

แก้ไข:มีภาพรวมที่น่าสนใจของสถานการณ์ในบล็อกนี้: monotouch ตอนนี้ตายในน้ำสิ่งที่แอปเปิ้ลข้อตกลงการพัฒนา iPhone ใหม่หมายถึงอะไร


7

ข้อตกลงใบอนุญาตใหม่มีความชัดเจนเกี่ยวกับเรื่องนี้อย่างชัดเจน ดังนั้นใช่มันจะถูกแบน

คำแนะนำถ้าคุณต้องการพัฒนาสำหรับ iPhone ลองใช้ XCode หากคุณคุ้นเคยกับ Java หรือ C # หรือยังดีกว่า C ++ อยู่แล้วการเรียนรู้ Objective-C จะไม่ยากอย่างนั้น

iPhone / iPad เป็นแอปเปิ้ลธุรกิจใหม่ที่ประสบความสำเร็จและพวกเขาจะทำทุกอย่างเพื่อให้ธุรกิจนี้เติบโตต่อไปบางทีพวกเขาจะไม่สั่งห้ามแอพ Monotouch แต่ใครจะไปรู้ต่อไป ดังนั้นหากคุณสนใจ iPhone dev จริงๆแทนที่จะมีฝันร้ายว่างานของคุณอาจถูกปฏิเสธ เพียงสลับไปที่ XCode อย่างน้อยก็จะทำให้แอปของคุณปฏิเสธเปอร์เซ็นต์ที่ลดลง ดังนั้นคำแนะนำของฉัน


18
ไม่ใช่ว่ามันยาก ใครก็ตามที่ใช้ monotouch รู้อยู่แล้วว่า Objective C มันคือ Objective C นั้นพัฒนาได้ไม่ดีเมื่อเทียบกับภาษาสมัยใหม่
James Moore

3
@jamesmoorecode: +1 แย่มาก
abatishchev

1
ใช่ฉันใช้เวลาในการเรียนรู้ Obj-c และ Cocoa Touch API ทั้งหมดดังนั้นมันจึงไม่ใช่ปัญหาสำหรับฉันที่จะเขียนแอพแบบพื้นเมืองตามที่ Apple ต้องการ เป็นเพราะเหตุใดฉันจึงต้องการทำเช่นนั้นเมื่อฉันสามารถใช้ MonoTouch เพื่อทำสิ่งต่างๆได้เร็วขึ้นและแบ่งปัน 'ตรรกะทางธุรกิจ' (แต่ไม่ใช่ส่วนต่อประสานผู้ใช้) กับ WP7 และ Silverlight สำหรับเบราว์เซอร์และแอปเดสก์ท็อป
U62

4
มีเหตุผลมากมายที่แอพใน appstore หยุดทำงานเป็นประจำ: วัตถุประสงค์ -C แม้แต่คนที่มีชื่อเสียงเช่น digg.com
Chris S

2
ฉันเรียนรู้ obj c บนรถไฟสู่การทำงานในเช้าวันนี้ - มันไม่ยาก - แต่มันเหม็น - มันเป็นภาษาที่ละเอียดและเก่าแก่ - ฉันควรเขียนแอพ iPhone ในงานศิลปะ T-SQL ASCII

6

ฉันคิดว่าสิ่งที่ต้องพิจารณาอย่างยิ่งคือแรงจูงใจของ Apple

ฉันเห็นด้วยกับความรู้สึกอื่น ๆ ที่โพสต์ออนไลน์ว่า Apple กำลังพยายามป้องกันการเปลี่ยนแอพพลิเคชั่นของสินค้า - กล่าวคือมีแอพพลิเคชั่นมากขึ้นที่เขียนโดยใช้เฟรมเวิร์กที่สร้างแอปพลิเคชัน

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

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


1
ใครก็ตามที่ลงคะแนนให้การวิเคราะห์เหตุผลของฉันจะตกนรกนักพัฒนาเพียงเพื่อแจ้งให้คุณทราบ ฉันหมายถึงเถียงกับฉัน แต่ทำไม downvote ด้วยเหตุผลว่าทำไมมันอาจไม่ถูกแบน? ทำไมไม่ลองเข้าใจว่า Apple กำลังทำอะไรแทนที่จะเข้าร่วมโกยและคบเพลิงตอนที่คบเพลิงแรกสว่างขึ้น?
Kendall Helmstetter Gelner

เห็นด้วย Kendal +1 สำหรับความสมดุล
si618

+1 อาร์กิวเมนต์ที่สมเหตุสมผล
Bill

1
+1 สำหรับผู้ที่ตกอับและมุมมองที่ต่างกัน ทุกครั้งที่ฉันไปกับกลุ่มคนจำนวนมากคิดว่าฉันลงคะแนนจนกว่าฉันจะถูกบังคับให้ลบโพสต์
kirk.burleson

5

ทั้งหมดที่ Apple กำลังพูดคือคุณต้องใช้ภาษาของปี 1980 เพื่อพัฒนาการแข่งขันของคุณเต้นแอพพลิเคชั่นมือถือที่ทันสมัย ​​...

ทำให้รู้สึกที่สมบูรณ์แบบ เสียงเหมือนกลยุทธ์การชนะสำหรับฉัน

นอกจากนี้ยังห้ามไม่ให้คุณใช้ห้องสมุดบุคคลที่สามที่คุณไม่สามารถรับประกันได้ว่าได้รับการพัฒนาในแบบตรง C, C ++ หรือ Objective C

ดังนั้นโดยทั่วไปหมายความว่าคุณไม่สามารถซื้อใน Games API เช่น Unity ได้


2
ดีพิจารณาว่า smalltalk-80 เป็นเรื่องเกี่ยวกับหลายสิบปีข้างหน้าของ C # ...
สเตฟาน Eggermont

อย่างที่คุณไม่สงสัยเลยว่า Objective C นั้นเป็น C ที่มีส่วนขยายของ SmallTalk
AnthonyLambert

4

เพียงแค่เพิ่ม 2 เซ็นต์ของฉัน ดูเหมือนว่าหลังจากอ่านส่วนนี้แล้ว: (เช่นแอปพลิเคชันที่ลิงก์ไปยัง Documented API ผ่านการแปลตัวกลางหรือเลเยอร์หรือเครื่องมือที่เข้ากันได้เป็นสิ่งต้องห้าม)ไม่มีอะไรจะพูดคุย พวกเขาแสดงให้พวกเขาอย่างชัดเจน ไม่เพียง แต่พวกเขากำลังแบน MonoTouch และ Unity3d แต่ดูเหมือนว่าพวกเขาจะแบนTitanium Frameworkด้วย อย่างไรก็ตามหลังจากที่ได้อ่านนี้บทความฉันพบว่าตัวเองสับสนจริงๆ ฉันไม่คุ้นเคยกับกฎหมายของสหรัฐอเมริกา แต่ถูกกฎหมายหรือไม่ ฉันหมายความว่าพวกเขาไม่ได้ทำผิดกฎหมายต่อต้านการผูกขาดหรือไม่?

นอกจากทั้งหมดนี้ฉันไม่สามารถเข้าใจแรงจูงใจของพวกเขา ไม่เพียง แต่พวกเขาจะสูญเสียความสนใจของนักพัฒนา แต่พวกเขาจะสูญเสียความเคารพจากนักพัฒนาด้วยเช่นกัน


4

ณ วันนี้ส่วนที่ 3.3.1 ของใบอนุญาตโปรแกรมนักพัฒนา Apple iOS ได้ถูกเปลี่ยนกลับเป็นข้อความเดิม:

3.3.1 แอปพลิเคชันอาจใช้ API ที่มีเอกสารในลักษณะที่กำหนดโดย Apple เท่านั้นและต้องไม่ใช้หรือโทร API ส่วนตัวใด ๆ

Apple ได้ออกแถลงการณ์อย่างเป็นทางการเกี่ยวกับการเปลี่ยนแปลงใบอนุญาต

นี่เป็นการระบุว่าตอนนี้ได้รับอนุญาตให้ใช้ MonoTouch แล้ว


+1 สำหรับการรวมเนื้อหาจริงไม่ใช่แค่ลิงค์หรือข้อความสั่ง
davidtbernal

3

เป้าหมายหนึ่งของทีมโมโนคือการย้าย Silverlight ไปยัง iPhone โดยใช้ MonoTouch / Moonlight สำหรับการพัฒนาข้ามแพลตฟอร์ม มันค่อนข้างเหมือนกับการย้ายแฟลชไปยัง iPhone นอกจากนี้ยังมี Monodroid เกี่ยวกับวิธีการช่วยเหลือเราในการโอนย้ายแอปพลิเคชั่นและคุณรู้ไหมว่า Apple ทำงานอย่างไม่หยุดยั้งทุกครั้งที่มีคนพูดว่า "Android" :-) IMHO หาก Apple กำหนดเป้าหมาย Adobe ด้วยข้อตกลงใหม่ เราอาจคาดเดาและมี NDA แต่พวกเราหลายคนใช้เวลามากในแพลตฟอร์มนี้ดังนั้นเราต้องทำให้สถานการณ์ชัดเจน เราไม่สามารถรอฤดูร้อนหน้าเพื่อหารือเกี่ยวกับเรื่องนี้ ตัวอย่างเช่นเพื่อนของฉันถูกขอให้ช่วย บริษัท ต้นแบบแอปพลิเคชัน MonoTouch สำหรับลูกค้า ข้อตกลงใหม่มีผลเฉพาะกับการกระจาย App Store หรือไม่ แล้วการกระจายภายใน บริษัท ล่ะ


ทำไม Apple ไม่คุยกับพวก Mono อย่างดีและทำให้พวกเขา
เลิก

1
@tony ทำไมพวกเขาถึงสนับสนุนแพลตฟอร์มแบบเปิดมากขึ้น
PeteT

2

สเปรดชีต Google เอกสารนี้มีรายการแอปจำนวนมากที่จะได้รับผลกระทบจากข้อตกลงใหม่ บางคนที่น่าสังเกตได้ที่ได้รับอันดับ 1 ใน appstore สำหรับหมวดหมู่:

  • ผู้ผูกขาด
  • น้ำมะนาวไทคูน
  • Skee ball
  • ผู้ตั้งถิ่นฐาน
  • Zombieville

หนึ่งในสิ่งที่ตลกคือ Toy Story


1
ข้อตกลงใหม่ครอบคลุมทุกเวอร์ชั่นของระบบปฏิบัติการไม่ใช่แค่ 4.0
Philippe Leybaert

จุดดีฉันลืมคุณต้องลงนามข้อตกลงใหม่ในเว็บไซต์
Chris S

2

o แอพจำนวนมากได้รับการยอมรับในไม่กี่วันที่ผ่านมาซึ่งเขียนด้วยความช่วยเหลือของ monotouch และ unity ในขณะที่ฉันยังใช้มันและ obj-c ด้วยเช่นกันตั้งแต่ประกาศและเปลี่ยนแปลงข้อตกลงดังนั้น GO FIGURE ... ol'WTF อยู่ในใจ มันเป็น piggybank สองขั้วที่ดูเหมือน

นอกจากนี้เกม Unity GiantMOTO สุดท้ายซึ่งอยู่ภายใต้เกมใหม่ร้อน - เมื่อวานนี้มีหน้าจอสาดบนโหลดด้วยตัวอักษรขนาดใหญ่ POWERED UNITY ดังนั้นการคาดเดาข้อสันนิษฐานและอื่น ๆ ทั้งหมดจึงเป็นประตูที่แท้จริง มันอาจจะบอกว่าทุกอย่างในเวอร์ชั่นใหม่มันไม่ได้บังคับใช้อย่างแน่นอน และ montouch เป็น platf สำหรับการพัฒนาเพียงตัวเดียวที่เปิดเผย iPhone API อย่างสมบูรณ์และสร้างเข้าสู่ obj-c โดยใช้ XCode อย่างสมบูรณ์


1

จากข้อตกลงสิทธิ์การใช้งานที่ระบุว่าแอป MonoTouch จะไม่ได้รับอนุญาตอย่างชัดเจนใน AppStore

คำถามที่น่าสนใจคือว่าพวกเขาจะบังคับใช้กรอบ / แอป พวกเขาจะต้องเขียนการทดสอบอัตโนมัติเพื่อตรวจสอบว่าแอพนั้นถูกเขียนขึ้นมาหรือไม่เพราะคนที่อนุมัติแอพจะไม่มีเวลา / ทักษะในการทำสำหรับแอพทุกตัว แอพเหล่านี้จะไม่ติดสติ๊กเกอร์ไว้ที่ 'การใช้ MonoTouch / Flash'


1
ฉันเดาว่ามันจะเป็นกระบวนการอัตโนมัติ ฉันเดาว่า monotouch และ flash compiler จะปล่อยรูปแบบรหัสทั่วไปจากการแปลงซึ่งสามารถเลือกจากสถิติที่รวบรวมได้
PeteT

3
ถ้าแอปเปิ้ลใช้กระบวนการอัตโนมัติบางอย่างแน่นอนพวกเขาจะพบรูปแบบการแปลง แต่นโยบายจากการใช้นี้เป็นเรื่องไร้สาระ ฉันหมายถึง Obj-C ดูดภาษาที่ค่อนข้างคลุมเครือ ฉันชอบสิ่งที่ MonoTouch เสนอให้
Shoaib Shaikh

@Shoaib เห็นด้วยอย่างแน่นอนว่ามันเป็นเรื่องไร้สาระและจะย้ายนักพัฒนาจำนวนมากไปยังโทรศัพท์ android และ windows ซึ่งในบางวิธีเป็นการดีสำหรับการแข่งขัน
PeteT

1

คำตอบสั้น ๆ สำหรับทุกหยดในข้อตกลงคือใช่ใช่

แอปเปิ้ลกำลังถ่ายทำเองโดยการ จำกัด โปรแกรมไว้สองสามภาษา:

  • C - ซึ่งไม่เหมาะสำหรับการพัฒนาแอพพลิเคชั่นในปัจจุบันเนื่องจากเป็นธรรมชาติในระดับต่ำ ส่วนใหญ่เป็นภาษาโปรแกรมระบบวันนี้
  • C ++ - ซึ่งทำให้การยิงโทรศัพท์ของคุณยากขึ้น แต่เมื่อมันเกิดขึ้นมันก็คือปืนยิงรถถัง นอกเหนือจาก Qt ยังไม่มีกรอบแอปพลิเคชั่นที่สมบูรณ์ที่จะใช้ใน C ++ (และ Qt ยังไม่รองรับ iPhone -)
  • Objective-C - ซึ่งคิดค้นโดย Apple และแน่นอนจะได้รับการสนับสนุน
  • JavaScript ทำงานใน WebKit - เป็นเว็บแอพพลิเคชัน

พวกเขาตั้งใจ จำกัด เครื่องมือที่คุณสามารถใช้พัฒนา iPhone ซึ่งจะทำให้พวกเขาตกอยู่ในปัญหาร้ายแรง ฉันแน่ใจว่าชุมชนขนาดใหญ่ที่ดีจะเลิกการพัฒนา iPhone และย้ายไปยังแพลตฟอร์มอื่นเช่น Windows Mobile, Symbian, Android หรือ Maemo ซึ่งเปิดให้บริการโดยสิ้นเชิง - คุณมีอิสระในการเขียนแอปพลิเคชันของคุณใน LOLCODE

นอกเหนือจากการสร้างขยะ iPhone ให้กับนักพัฒนาแล้วมันยังให้การจูบที่ดีกับ Adobe: Apple จงใจบล็อก Flash จาก iPad และตอนนี้พวกเขากำลังบล็อกมันจาก iPhone nummer เป็นคุณลักษณะที่ใหญ่ที่สุดของ Adobe Flash CS5 ที่ใช้แอพพลิเคชั่น Flash กับ iPhone

tl; dr:โดยทั่วไปแล้วแอปเปิ้ลยิงตัวเองด้วยการเคลื่อนไหวนี้


แอปเปิ้ลยิงเข้าที่แล้วตอนแรกและทุกคนก็พูดว่า "แอปเปิลนั้นถึงกำหนดแล้วเนื่องจากสถาปัตยกรรมปิด" ปรากฎว่าการยิงตัวเองในขณะที่พนักงานคนใดคนหนึ่งจะกลายเป็นที่ปรึกษามักจะเป็นกลยุทธ์ที่ดี
Dan Rosenstark

ใช่ละม่อมลมหายใจของคุณสำหรับขนาดที่ดีของชุมชนเพื่อออกจากการพัฒนา iPhone!
kirk.burleson

Objective-C ไม่ได้คิดค้นโดย Apple มันเพิ่งนำมาใช้เช่น LLVM และ BSD ส่วนเดียวกัน :)
Emil Marashliev

1

ตอนนี้เป็นเวลาหลายเดือนหลังจากเกิดน้ำท่วมฉับพลันและมันก็ชัดเจนว่า Monotouch และ Unity ทำได้ดี

ตาม"แอปพลิเคชันที่ลิงก์ไปยัง API ที่ทำเป็นเอกสารผ่านการแปลสื่อกลางหรือเลเยอร์หรือเครื่องมือที่เข้ากันไม่ได้"

Monotouch รวบรวมรหัสลงในไบนารีเนทีฟไม่มี "เลเยอร์" พวกเขากำลังอ้างถึง somethign เช่น. NET runtime, Java JVM หรือ Flash runtime


มันบอกเกี่ยวกับ API ที่ทำเป็นเอกสาร ดังนั้นฉันคิดว่ามันไม่สำคัญว่าคุณจะรวบรวมไลบรารีดั้งเดิมหรือไม่
vodkhang

ประเด็นคือความต้องการที่คุณต้องซื้อ Mac เพื่อพัฒนาสำหรับ iPhone สิ่งนี้ไม่เพียงใช้กับ Java และ Flash เท่านั้น แต่ยังใช้กับ mono ด้วยเพราะ mono ให้คุณพัฒนาบนคอมพิวเตอร์ windows / Linux แต่แตกต่างจาก Java หรือ Flash, โมโนอาจไม่ได้ใช้มากดังนั้นพวกเขายังไม่สนใจ
Stefan Steiger

1

แอปพลิเคชั่นโมโนโดยทั่วไปจะคอมไพล์กับ bytecode ซึ่งจำเป็นต้องมีการคอมไพล์ JIT (ทันเวลา) เพื่อเรียกใช้ดังนั้นเฟรมเวิร์ก. Net หรือ Mono Framework จำเป็นต้องมี อย่างไรก็ตามในกรณีของ iOS และ Android แอปพลิเคชั่น Mono จะรวบรวมรหัสดั้งเดิม ดังนั้นในสายตาของ Apple ไม่มีชั้นที่สามApple จะไม่ห้าม Mono ดังนั้นคุณสามารถพัฒนาได้อย่างอิสระด้วย MonoTouch และกระจายแอพของคุณ เพื่อให้คุณมั่นใจยิ่งขึ้นมีแอพพลิเคชั่นโมโนมากมาย (รวมถึงเกมและแอพพลิเคชั่น) ใน AppStore ที่มีมานานแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.