คำถามติดแท็ก objective-c

Objective-c เป็นภาษาเชิงวัตถุที่เน้นข้อความแบบไดนามิกสูงซึ่งเป็นส่วนเหนือของ C ซึ่งใช้เป็นหลักในการเขียนโปรแกรมแพลตฟอร์ม MacOS X และ iOS ของ Apple

5
Swift จะเร็วกว่า Objective-C มากในการเปรียบเทียบเหล่านี้อย่างไร
แอปเปิ้ลเปิดตัวภาษาโปรแกรมใหม่ของสวิฟท์ที่WWDC14 ในการนำเสนอพวกเขาทำการเปรียบเทียบประสิทธิภาพระหว่าง Objective-C และ Python ต่อไปนี้เป็นรูปภาพของหนึ่งในสไลด์ของการเปรียบเทียบภาษาทั้งสามที่ดำเนินการเรียงลำดับวัตถุที่ซับซ้อน มีกราฟที่น่าทึ่งยิ่งขึ้นเกี่ยวกับการเปรียบเทียบประสิทธิภาพโดยใช้อัลกอริทึมการเข้ารหัสRC4 เห็นได้ชัดว่านี่คือการพูดคุยด้านการตลาดและพวกเขาไม่ได้ลงรายละเอียดเกี่ยวกับวิธีการนำไปใช้ในแต่ละครั้ง ฉันทิ้งฉันสงสัยว่า: ภาษาการเขียนโปรแกรมใหม่จะเร็วขึ้นได้อย่างไร? ผลลัพธ์ Objective-C เกิดจากคอมไพเลอร์ที่ไม่ดีหรือมีบางสิ่งที่มีประสิทธิภาพน้อยกว่าใน Objective-C กว่า Swift หรือไม่? คุณจะอธิบายประสิทธิภาพที่เพิ่มขึ้น 40% ได้อย่างไร ฉันเข้าใจว่าการรวบรวมขยะ / การควบคุมการอ้างอิงอัตโนมัติอาจทำให้เกิดโอเวอร์เฮดเพิ่มเติม

5
เสียงสัญญาณเตือนดังกราวสำหรับการพัฒนา Objective-C
ในฐานะโปรแกรมเมอร์ C & Objective-C ฉันรู้สึกหวาดระแวงเล็กน้อยกับแฟล็กการเตือนของคอมไพเลอร์ ฉันมักจะพยายามค้นหารายการคำเตือนทั้งหมดสำหรับคอมไพเลอร์ที่ฉันใช้และเปิดใช้งานส่วนใหญ่ยกเว้นว่าฉันมีเหตุผลที่ดีจริง ๆ ที่จะไม่เปิดใช้งาน โดยส่วนตัวฉันคิดว่าสิ่งนี้อาจช่วยพัฒนาทักษะการเขียนโค้ดรวมถึงการพกพาโค้ดที่อาจเกิดขึ้นป้องกันปัญหาบางอย่างเนื่องจากมันบังคับให้คุณระวังทุกรายละเอียดเล็กน้อยการใช้งานที่อาจเกิดขึ้นและปัญหาด้านสถาปัตยกรรมและอื่น ๆ ... มันเป็นความคิดของฉันเป็นเครื่องมือการเรียนรู้ที่ดีทุกวันแม้ว่าคุณจะเป็นโปรแกรมเมอร์ที่มีประสบการณ์ สำหรับส่วนที่เป็นอัตนัยของคำถามนี้ฉันสนใจที่จะได้ยินนักพัฒนาอื่น ๆ (ส่วนใหญ่ C, Objective-C และ C ++) เกี่ยวกับหัวข้อนี้ คุณสนใจเกี่ยวกับสิ่งต่าง ๆ เช่นคำเตือนเกี่ยวกับเด็ก ๆ หรือไม่? และถ้าใช่หรือไม่ใช่ทำไม ตอนนี้เกี่ยวกับ Objective-C ฉันเพิ่งเปลี่ยนมาใช้LLVM toolchain (กับ Clang) แทน GCC ในรหัสการผลิตของฉันฉันมักจะตั้งค่าสถานะการเตือนนี้ (ชัดเจนแม้ว่าบางคนอาจจะครอบคลุมโดย -Wall): -ผนัง -Wbad ฟังก์ชั่หล่อ -Wcast ชิด -Wconversion -Wdeclaration หลังจากคำสั่ง -Wdeprecated-การใช้งาน -Wextra -Wfloat เท่ากับ …

3
มันถือว่าเป็นแนวปฏิบัติที่ไม่ดีในการเพิ่มตรรกะใน setter คุณสมบัติหรือไม่?
ฉันเพิ่มเข้าไปในโครงการและเห็นว่าผู้พัฒนารายอื่นกำลังเพิ่มตรรกะจำนวนมากใน setters ของคุณสมบัติที่สังเคราะห์ ฉันเข้าใจว่ามันใช้งานได้อย่างไร แต่ฉันคิดว่ามันยากที่จะเข้าใจการไหลของโปรแกรม ในขณะที่อ่านรหัสเมื่อใดก็ตามที่ฉันเห็นself.something = whateverฉันมักจะตรวจสอบว่าsomethingsetter ของถูกแทนที่ ความคิดเห็นของคุณเกี่ยวกับหัวข้อนี้คืออะไร? คุณคิดว่านี่เป็นสัญลักษณ์ของสถาปัตยกรรมที่ไม่ดีหรือวิธีการแก้ปัญหาที่ซับซ้อนหรือไม่? ฉันยินดีที่จะอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ถ้าคุณมีลิงค์ / แหล่งข้อมูลที่เกี่ยวข้องมันยากเกินไปที่จะรับผลลัพธ์ google ที่ดีดังนั้นฉันจึงตัดสินใจถามที่นี่เช่นกัน ขอบคุณสำหรับคำตอบใด ๆ และโปรดทราบว่าฉันกำลังพูดถึงวัตถุประสงค์ C ในกรณีที่คุณไม่ได้เห็นแท็ก (แม้ว่านี่จะไม่เป็นปัญหาเฉพาะภาษาที่ฉันเดา)

5
MonoTouch vs Objective-C สำหรับการพัฒนา iPhone / iPod / iPad [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา สำหรับผู้ที่มีประสบการณ์. Net และต้องการพัฒนาสำหรับ iPhone / iPod / iPad มันคุ้มค่าที่จะเรียนรู้ Objective-C หรือไม่? MonoTouch เป็นทางเลือกที่ดีหรือไม่? อะไรคือข้อเสียเมื่อใช้ MonoTouch กับการเข้ารหัสใน Objective-C
25 c#  .net  iphone  objective-c 

2
เหตุใด Objective-C จึงไม่ได้ใช้อย่างกว้างขวางนอกเหนือจากสภาพแวดล้อมของโกโก้
Objective-C มีการวางแนววัตถุที่ดีความเรียบง่ายความสง่างามและ (ในรูปแบบของ C) ความสามารถระดับต่ำ มันอาจเป็นทางเลือกที่ง่ายทันสมัยใน C ++ ที่หลายคนมองหาและลองค้นหาใน Go แต่มันถูกใช้ในสภาพแวดล้อม Cocoa และ post-NextSTEP และแม้แต่ในกรณีนี้ก็ยังถูกมองว่าเป็นภาระด้วยเหตุผลทางประวัติศาสตร์มากกว่าเป็นทางเลือกที่ดีที่สุด ทำไมมันไม่ใช้กันอย่างแพร่หลายมากขึ้นแล้ว? ปัญหาของมันคืออะไร?

5
สำเร็จ: / ล้มเหลว: บล็อก vs เสร็จสมบูรณ์: บล็อก
ฉันเห็นรูปแบบทั่วไปสองแบบสำหรับบล็อกใน Objective-C หนึ่งคือคู่ของความสำเร็จ: / ความล้มเหลว: บล็อกอื่น ๆ คือความสมบูรณ์เดียว: บล็อก ตัวอย่างเช่นสมมติว่าฉันมีงานที่จะส่งคืนวัตถุแบบอะซิงโครนัสและงานนั้นอาจล้มเหลว -taskWithSuccess:(void (^)(id object))success failure:(void (^)(NSError *error))failureรูปแบบแรกคือ -taskWithCompletion:(void (^)(id object, NSError *error))completionรูปแบบที่สองคือ ความสำเร็จ: / ความล้มเหลว: [target taskWithSuccess:^(id object) { // W00t! I've got my object } failure:^(NSError *error) { // Oh noes! report the failure. }]; เสร็จ: [target taskWithCompletion:^(id object, NSError …

2
ทำไมสวิฟต์ไม่ต้องใช้เครื่องหมายอัฒภาค? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปกติฉันเขียนโค้ดใน c # หรือ Objective-C และเมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ภาษาการเขียนโปรแกรมใหม่ของ Apple - Swift สิ่งแรกที่ฉันสังเกตเห็นคือคุณไม่จำเป็นต้องเพิ่มเครื่องหมายอัฒภาคเพื่อจบบรรทัดใน Swift แต่ถ้าคุณทำอย่างน้อยจากสิ่งที่ฉันทดสอบ - มันไม่รบกวนคอมไพเลอร์ เมื่อฉันเขียน: int someNumber = 0; ใน Objective-C เครื่องหมายอัฒภาคจะบอกโปรแกรมว่าบรรทัดนั้นสิ้นสุดลงและจะไม่ผ่านไปยังบรรทัดถัดไป ด้วย Swift ฉันสามารถประกาศตัวแปรด้วย var someNumber:Int = 5 และไม่เพิ่มเซมิโคลอนและระบบรู้ว่านี่คือจุดสิ้นสุดของบรรทัด อะไรทำให้บางภาษาทำสิ่งนี้และคนอื่น ๆ ไม่ได้? ทำไมไม่เก็บระบบที่เป็นรูปแบบเดียวกันของการเพิ่มเครื่องหมายอัฒภาคไว้ที่ท้าย?

4
Objective-C หล่นลงมาในความต่อเนื่องของประสิทธิภาพของภาษาหรือไม่
ดูเหมือนว่าจะมีการถกเถียงกันมากมายเกี่ยวกับข้อดีความเร็วต่าง ๆ กับ C หรือ C ++ เมื่อเทียบกับ Java หรือ Python แต่ฉันไม่ค่อยเห็น Objective-C ที่กล่าวถึง ประมาณว่ามันอยู่ในแง่ของประสิทธิภาพภาษา?

7
บูรณาการอย่างต่อเนื่อง: ความถี่ใด
ฉันเปิดตัวบิลด์ทุกครั้งหลังทำคอมมิชชัน แต่ในโปรเจ็กต์ใหม่นี้สถาปนิกเพิ่งขอให้ฉันเปลี่ยนความถี่เป็น "สร้างทุก ๆ 15 นาที" และฉันก็ไม่เข้าใจว่าทำไมจึงเป็นเหตุผลที่ดี การสร้างในแต่ละการกระทำ " ก่อนปิดรายละเอียดบางอย่าง: โครงการ Objective-C (iOS 5) 10 ผู้พัฒนา แต่ละบิลด์ใช้เวลาประมาณ 1 นาทีและรวมถึงการสร้างและทดสอบหน่วย เซิร์ฟเวอร์การรวมเป็น Mac Mini ดังนั้นพลังการประมวลผลจึงไม่เป็นปัญหาสำหรับที่นี่ เราใช้ Jenkins กับปลั๊กอิน XCode ข้อโต้แย้งของฉันคือถ้าคุณสร้างแต่ละการกระทำคุณสามารถเห็นได้ในขณะนี้สิ่งที่ผิดพลาดและแก้ไขข้อผิดพลาดของคุณโดยตรงโดยไม่ต้องรบกวน dev อื่น ๆ บ่อยเกินไป นอกจากนี้ผู้ทดสอบของเราก็ใส่ใจน้อยลงด้วยข้อผิดพลาด UT ด้วยวิธีนี้ ข้อโต้แย้งของเขาคือการที่ devs จะถูกน้ำท่วมโดยอีเมล "ข้อผิดพลาดในการสร้าง" (ซึ่งไม่เป็นความจริงอย่างสมบูรณ์เนื่องจากเจนกินส์สามารถกำหนดค่าให้ส่งอีเมลสำหรับการสร้างที่พังครั้งแรกเท่านั้น) และเมตริกนั้นไม่สามารถทำได้อย่างถูกต้องหากความถี่ ของงานสร้างสูงเกินไป ดังนั้นคุณคิดอย่างไรกับเรื่องนี้?

3
Massive View Controller - IOS - โซลูชั่น
ฉันแน่ใจว่านักพัฒนา iOS ใหม่ทุกคนมีปัญหาดังต่อไปนี้: ตัวควบคุมมุมมองได้รับความแออัดอย่างรวดเร็วด้วยรหัสสำหรับวัตถุประสงค์ที่หลากหลายรับ 500 บรรทัดของรหัสได้อย่างง่ายดาย นี่คือหน้าตาพื้นฐานและหน้าจอทั่วไปสองแบบ: 1) หน้าจอแบบฟอร์ม: 2) หน้าจอควบคุมมุมมองตาราง จนถึงตอนนี้ฉันได้อ่านเกี่ยวกับโซลูชันที่แตกต่างกันสองวิธี: โซลูชั่นแรก: https://bendyworks.com/single-responsibility-principle-ios/ สิ่งนี้ยึดตามการแจ้งเตือนซึ่งแยกตัวควบคุมมุมมองออกจากตัวแบบมุมมอง (ความตั้งใจ) โดยสมบูรณ์และลดรหัสในตัวควบคุมมุมมอง ฉันคิดว่ามันมีข้อเสียของการทำลายโค้ดคล้ายกับโครงสร้างของ Go-To ดูเหมือนว่านี้: โซลูชันที่สองช่วยให้ View Controller เป็นแออัดเหมือนเดิม (การทำงานของปุ่มจะถูกดำเนินการภายใน VC และอื่น ๆ ) แต่ใช้ไลบรารีเช่นTPKeyboardAvoiding , BlocksKit หรือโซลูชันอื่น ๆ ส่วนใหญ่อ้างอิงจากหมวดหมู่ ด้วยวิธีที่สองนี้รหัสจะลดลงอย่างมาก แต่ตัวควบคุมมุมมองยังคงมีความรับผิดชอบจำนวนมาก คุณคิดอย่างไรเกี่ยวกับการแก้ปัญหาเหล่านี้? ไหนดีกว่ากัน มีดีกว่าไหม
16 mvc  ios  objective-c 

2
ค่าใช้จ่ายวิธีการของวัตถุประสงค์ -c ทำให้วิธีการออกแบบ 'เล็ก ๆ น้อย ๆ หลายวิธี' ไม่สามารถมองเห็นได้หรือไม่?
ฉันมักโปรดปรานโดยใช้วิธีการเล็ก ๆ ตามคำแนะนำของหมู่คนบ๊อบมาร์ตินรหัสสะอาด ฉันได้อ่านยังเพียงพอเกี่ยวกับ internals Objective-C ที่จะมีอย่างน้อยความคิดบางอย่างเกี่ยวกับวิธีการจัดส่งข้อความการทำงานของมัน ( ชุด bbumsเป็นข้อมูลโดยเฉพาะอย่างยิ่งเกี่ยวกับเรื่องนี้) ความกังวลเกี่ยวกับการปรับให้เหมาะสมก่อนวัยอันควรถึงกระนั้นฉันอยากจะรู้ว่าสิ่งที่การทำงานของ Objective-c ทำกับ objc_msgSend หรือไม่นั้นในทางปฏิบัตินั้นมีความหมายเพียงพอสำหรับแนวทาง 'วิธีเล็ก ๆ น้อย ๆ ' การค้นพบเชิงประจักษ์นั้นน่ายินดีเป็นอย่างยิ่ง (บางทีฉันอาจตั้งค่าการทดสอบด้วยตัวเอง) ประสบการณ์จากผู้ที่เขียนโครงการวัตถุประสงค์ขนาดใหญ่ก็คงจะยอดเยี่ยมเช่นกัน การอธิบาย น้ำเสียงทั่วไปของคำถามนั้นมีเจตนา ฉันไม่ได้ถามเกี่ยวกับการปรับแต่งประสิทธิภาพของแอพเฉพาะ (ซึ่งเป็นเหตุผลที่ฉันถามที่นี่มากกว่า SO) แต่เพิ่มเติมเกี่ยวกับว่าลักษณะภาษาของ Objective-C กีดกันวิธีการออกแบบที่แน่นอนหรือไม่ ฉันได้สังเกตว่ารหัสส่วนใหญ่ที่ฉันเห็นจาก Apple และฝ่ายอื่น ๆ (ใน GitHub ฯลฯ ) มีแนวโน้มที่จะใช้วิธีการขนาดใหญ่ (และคลาส) และฉันสงสัยว่านี่เป็นอคติที่ได้พุ่งขึ้นเพราะภาษา ตัวเอง แน่นอนฉันอาจได้อ่านรหัสผิดหรืออาจเป็นวัฒนธรรมมากกว่าปัจจัยทางเทคนิคที่นำไปสู่แนวโน้มถ้ามันมีอยู่ (สำหรับสิ่งที่คุ้มค่าฉันกำลังเขียน Objective-C และฉันใช้วิธีการเล็ก ๆ ) ขอเพิ่มเติม …

3
ผู้คนใช้จำนวนมากเมื่อเขียนโปรแกรมใน Objective C หรือไม่
สิ่งที่เกี่ยวข้อง: คำเตือน“ ส่ง 'const NSString *' ไปยังพารามิเตอร์ประเภท 'NSString *' ยกเลิกคำจำกัดความของคำบ่น บางครั้งฉันคิดว่ามันมีประโยชน์ ฉันอาจต้องผ่านตารางและต้องการตรวจสอบให้แน่ใจว่าเนื้อหาของตารางไม่เปลี่ยนแปลง อย่างไรก็ตามในที่สุดตัวอย่างโปรแกรม Objective-C, constผมไม่เคยเห็น คำถามของฉันคือทำไม

7
รับหัวของฉันรอบ Immutability
ฉันยังใหม่ต่อการเขียนโปรแกรมเชิงวัตถุและแนวคิดหนึ่งที่ทำให้ฉันเข้าใจไม่ได้ ฉันคิดว่าหลอดไฟดับไปเมื่อคืน แต่ฉันต้องการยืนยัน: เมื่อฉันเจอข้อความที่ไม่สามารถเปลี่ยนวัตถุที่ไม่เปลี่ยนรูปได้ฉันก็สับสนเพราะฉันสามารถทำสิ่งต่อไปนี้: NSString *myName = @"Bob"; myName = @"Mike"; ที่นั่นฉันเพิ่งเปลี่ยน myName ประเภท NSString ที่ไม่เปลี่ยนรูป ปัญหาของฉันคือคำว่า "วัตถุ" สามารถอ้างถึงวัตถุทางกายภาพในหน่วยความจำหรือนามธรรม "myName" คำจำกัดความเดิมใช้กับแนวคิดของการเปลี่ยนแปลงไม่ได้ สำหรับตัวแปรนั้นนิยามของ immutability ที่ชัดเจน (สำหรับฉัน) คือค่าของวัตถุที่ไม่เปลี่ยนรูปสามารถเปลี่ยนได้โดยเปลี่ยนตำแหน่งในหน่วยความจำเช่นการอ้างอิง ถูกต้องหรือไม่ฉันยังหลงทางอยู่ในป่า?

1
หลักการตั้งชื่อสำหรับโครงการโอเพ่นซอร์ส iOS / OSX
ไม่เสมอไป แต่ส่วนใหญ่คุณจะพบโครงการโอเพ่นซอร์ส iOS หรือ Mac OS X ที่มีชื่อขึ้นต้นด้วยตัวอักษรเริ่มต้นของชื่อและนามสกุลของผู้แต่ง NLMyProjectหากเป็นโครงการที่ได้รับจะได้รับการประพันธ์โดยนิคเลอบลังโครงการจะได้รับการอ่านเป็น ตัวอย่าง: RMSwipeTableViewCellโดย Rune Madsen EBCardCollectionViewLayoutโดย Ezequiel Becerra, SDiPhoneVersionโดย Sebastian Dobrincu LNNotificationsUIโดย Leo Natan สิ่งนั้นมาจากไหน มีคนคนหนึ่งเขียนด้วยวิธีนี้ก่อนจากนั้นคนอื่นตามมา ฉันไม่สามารถหาอะไรเกี่ยวกับมันแม้จะอยู่ในหลักเกณฑ์ของแอปเปิ้ล เป็นสำนวนที่เขียนได้ทุกที่หรือไม่?

1
การจัดระเบียบรหัสสำหรับการพัฒนาแอป iOS
ฉันได้พัฒนาแอพสำหรับแพลตฟอร์ม iOS และเมื่อฉันดำเนินการต่อไปฉันสังเกตเห็นว่าฉันทำงานหนักมากในการจัดระเบียบไฟล์ของฉัน (.h, .m, .mm) มีมาตรฐานอุตสาหกรรมหรือแนวปฏิบัติที่ดีที่สุดในเรื่องการจัดระเบียบไฟล์สำหรับโครงการ iOS หรือไม่? ไฟล์ของฉันมีคลาสที่กำหนดเอง (ด้านข้างตัวควบคุมมุมมอง), ตัวควบคุมมุมมองที่กำหนดเอง, เนื้อหาของบุคคลที่สาม, รหัสที่ใช้งานได้กับ iOS 5.0+ และรหัสที่ใช้กับเวอร์ชันก่อนหน้าเท่านั้น สิ่งที่ฉันกำลังมองหาคือทางออกสำหรับการจัดระเบียบสิ่งต่าง ๆ ในลักษณะที่คนอื่น ๆ (หรือตัวฉันเองในอีกไม่กี่ปีข้างหน้า) สามารถดูและเข้าใจโครงสร้างพื้นฐานของแอปพลิเคชันและไม่หลงทางในไฟล์หลายไฟล์ที่พบ

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