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

Objective-Cเป็นหนึ่งในภาษาโปรแกรมที่ถึงแม้จะถูกบดบังรัศมีไปบ้างในช่วงหลังๆ ด้วยการเติบโตของ Swift แต่ก็ยังคงเป็นเครื่องมือสำคัญในประวัติศาสตร์และปัจจุบันของการเขียนโปรแกรมสำหรับระบบของ Apple หากคุณเคยได้ยินเกี่ยวกับการสร้างแอปพลิเคชันสำหรับ iOS หรือ macOSคุณก็คงเคยได้ยินภาษานี้มาบ้างแล้ว เพราะมันเป็นรากฐานของการพัฒนาในระบบนิเวศของ Apple มานานกว่าสองทศวรรษ
ในบทความนี้ เราจะสำรวจทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อทำความเข้าใจObjective-C : คุณสมบัติที่โดดเด่นที่สุด ต้นกำเนิด การใช้งานในปัจจุบัน และวิธีการเปรียบเทียบกับทางเลือกอื่นๆ เช่น Swift คุณจะได้เห็นตัวอย่างเชิงปฏิบัติเพื่อช่วยให้คุณเข้าใจไวยากรณ์ โครงสร้าง และความสามารถ รวมถึงแง่มุมสำคัญของการจัดการหน่วยความจำ รูปแบบการเขียนโปรแกรมเชิงวัตถุ โปรโตคอล และอื่นๆ อีกมากมาย เตรียมตัวให้พร้อม เพราะเราจะเจาะลึกทุกแง่มุมของภาษาที่น่าสนใจนี้
Objective-C คืออะไร?
Objective-C เป็นภาษาโปรแกรมเชิงวัตถุที่ออกแบบมาเพื่อขยายขีดความสามารถของภาษา C โดยให้ความสามารถที่typical ของภาษาเชิงวัตถุ โดยเฉพาะอย่างยิ่งภาษาที่ได้รับแรงบันดาลใจจาก Smalltalk จุดเริ่มต้นของมันย้อนกลับไปในทศวรรษ 1980 โดย Brad Cox และ StepStone Corporation ด้วยเป้าหมายที่จะมอบระบบการส่งข้อความแบบ Smalltalk ให้กับภาษา C เพื่อให้มีความยืดหยุ่นและโมดูลาร์มากขึ้นในการเขียนโปรแกรม
แตกต่างจากภาษา C บริสุทธิ์ภาษา Objective-C อนุญาตให้คุณสร้างและจัดการอ็อบเจ็กต์ ซึ่งหมายความว่าคุณสามารถจัดโครงสร้างโค้ดของคุณโดยใช้เอนทิตีที่มีทั้งข้อมูลและฟังก์ชันที่เกี่ยวข้องได้ สิ่งนี้มีประโยชน์อย่างยิ่งในการพัฒนาแอปพลิเคชันที่ซับซ้อน เนื่องจากช่วยส่งเสริมการจัดระเบียบโค้ด การนำกลับมาใช้ใหม่ และการบำรุงรักษาได้ง่ายขึ้น
หนึ่งในความสำเร็จที่ยิ่งใหญ่ของ Objective-C คือไวยากรณ์และการทำงานของมันช่วยให้สามารถรวมโค้ดที่เขียนด้วยภาษา C เข้ากับฟังก์ชันการทำงานเชิงวัตถุได้ซึ่งทำให้การเปลี่ยนผ่านจากโครงการ C ที่มีอยู่เดิมและการบูรณาการคุณสมบัติใหม่ๆ ที่ซับซ้อนยิ่งขึ้นเป็นไปได้ง่ายขึ้น
ประวัติและวิวัฒนาการของ Objective-C
จุดกำเนิดของ Objective-Cสามารถย้อนกลับไปได้ถึงช่วงทศวรรษ 80 เมื่อ Brad Cox และ Tom Love นักพัฒนาซอฟต์แวร์ที่ StepStone ตระหนักถึงความจำเป็นในการเพิ่มความสามารถให้กับภาษา C ให้คล้ายกับ Smalltalk ซึ่งเป็นภาษาชั้นนำสำหรับการเขียนโปรแกรมเชิงวัตถุในขณะนั้น ความตั้งใจของพวกเขาคือการผสานพลัง ความเร็ว และความนิยมของภาษา C เข้ากับความยืดหยุ่นของ Smalltalk สร้างภาษาลูกผสมที่ให้ข้อดีของทั้งสองภาษา
เวอร์ชันแรกเปิดตัวในปี 1984 และต่อมาถูกนำไปใช้โดยบริษัทต่างๆ เช่น NeXT ซึ่งเป็นบริษัทที่สตีฟ จ็อบส์ก่อตั้งขึ้นหลังจากที่เขาออกจาก Apple ชั่วคราวNeXT ได้รวม Objective-C เข้าไว้เป็นภาษาหลักของระบบปฏิบัติการ NeXTSTEP ของตน ซึ่งเป็นการวางรากฐานสำหรับสิ่งที่ต่อมาจะกลายเป็น macOS และ iOS เมื่อ Apple เข้าซื้อกิจการ NeXT ในช่วงปลายทศวรรษ 90
ตั้งแต่นั้นเป็นต้นมาและเป็นเวลาเกือบสามสิบปีที่ Objective-C ได้กลายเป็นมาตรฐานที่ไม่มีใครโต้แย้งสำหรับการพัฒนาซอฟต์แวร์บนระบบปฏิบัติการของ Apple ในปี 2014 Apple ได้ประกาศเปิดตัว Swift เป็นภาษาอ้างอิงใหม่สำหรับการพัฒนาแอปพลิเคชัน แต่ Objective-C ยังคงเป็นส่วนสำคัญของระบบนิเวศ โดยเฉพาะอย่างยิ่งสำหรับการบำรุงรักษาแอปพลิเคชันที่มีอยู่และการเข้าถึง API และเฟรมเวิร์กเก่าที่ยังไม่ได้โยกย้าย
ในปัจจุบันแม้ว่า Swift จะครองตลาดการพัฒนาแอปพลิเคชันใหม่ๆ แต่ Objective-C ยังคงมีความสำคัญสำหรับทีมที่ทำงานกับโค้ดเบสเก่าๆ เฟรมเวิร์กที่ยังไม่ได้ปรับให้เข้ากับ Swift และเป็นตัวเชื่อมสำหรับโครงการข้ามแพลตฟอร์มบางประเภท
Objective-C ใช้ทำอะไร?
Objective-C โดดเด่นเป็นพิเศษในฐานะภาษาโปรแกรมหลักที่ Apple ใช้สำหรับระบบปฏิบัติการ macOS และ iOS รวมถึงเฟรมเวิร์กพื้นฐานยอดนิยมอย่าง Cocoa และ Cocoa Touch ตั้งแต่ส่วนติดต่อผู้ใช้แบบกราฟิกของ Mac ไปจนถึงแอปพลิเคชันมือถือที่ซับซ้อนที่สุดสำหรับ iPhone และ iPad Objective-C ช่วยให้การสร้างซอฟต์แวร์ที่มีความแข็งแกร่ง มีประสิทธิภาพ และบำรุงรักษาได้ง่าย
ข้อดีหลักประการหนึ่งคือช่วยให้สามารถผสมผสานโค้ดภาษา C และโค้ดเชิงวัตถุได้ ทำให้สามารถใช้ไลบรารีภาษา C ในโครงการสมัยใหม่ ซึ่งมีประโยชน์อย่างยิ่งในแอปพลิเคชันที่ต้องการประสิทธิภาพสูงสุดหรือการบูรณาการกับโค้ดเดิม
การใช้งาน Objective-C ที่โดดเด่นที่สุดบางส่วนได้แก่:
- การพัฒนาแอพเนทีฟสำหรับ iOS และ macOS: แม้กระทั่งทุกวันนี้ แอปจำนวนมากบน App Store ยังคงเขียนด้วย Objective-C ทั้งหมดหรือบางส่วน
- การเข้าถึง Apple API รุ่นเก่า: ฟีเจอร์ระบบหลายอย่างจะมีเฉพาะในภาษานี้เท่านั้น จึงมีความจำเป็นสำหรับการดูแลรักษาและปรับปรุงโครงการระยะยาว
- เฟรมเวิร์กและไลบรารีของตัวเอง: เป็นเรื่องปกติที่ทีมพัฒนาขนาดใหญ่จะยังคงดูแลรักษาไลบรารี Objective-C เพื่อประสิทธิภาพและความเข้ากันได้
- ความเข้ากันได้กับ GNUstep และแพลตฟอร์มอื่น ๆ: นอกเหนือจาก Apple แล้ว การใช้งานอื่นๆ เช่น GNUstep ยังช่วยให้สามารถใช้ Objective-C บนระบบที่ไม่ใช่ของ Apple ได้อีกด้วย
คุณสมบัติหลักของ Objective-C
ภาษา Objective-C มีคุณสมบัติหลายอย่างที่โปรแกรมเมอร์ชื่นชอบ โดยเฉพาะอย่างยิ่งผู้ที่มาจากโลกของภาษา C ด้านล่างนี้ เราจะมาทบทวนคุณสมบัติที่สำคัญที่สุดเพื่อให้เข้าใจว่าอะไรทำให้มันมีเอกลักษณ์แตกต่างจากภาษาอื่นๆ:
- ภาษาเชิงวัตถุ: ทุกสิ่งทุกอย่างหมุนรอบวัตถุ ช่วยให้สามารถกำหนดคลาส การสืบทอด ความหลากหลาย และการหุ้มห่อ รวมไปถึงการแบ่งโค้ดอย่างชัดเจน
- ซุปเปอร์เซ็ตของ C: มันรักษาฟังก์ชันการทำงานทั้งหมดของ C ไว้ ทำให้สามารถรวมชุดคำสั่งดั้งเดิม (เช่น
while,for,do-while) และจัดการข้อมูลดั้งเดิมควบคู่ไปกับวัตถุ - การส่งข้อความแบบ Smalltalk: การเรียกใช้เมธอดจะดำเนินการโดยการส่งข้อความไปยังวัตถุ ซึ่งช่วยเพิ่มความยืดหยุ่นและความคล่องตัวให้กับการพัฒนา
- การจัดการหน่วยความจำแบบชัดเจน: ต่างจากภาษาสมัยใหม่ที่มีการจัดการหน่วยความจำอัตโนมัติ Objective-C ต้องการให้โปรแกรมเมอร์ควบคุมการสร้างและการเผยแพร่ของแต่ละอ็อบเจกต์ แม้ว่าตั้งแต่ปี 2011 ที่มีการมาถึงของ ARC (Automatic Reference Counting) งานนี้ได้รับการปรับให้เรียบง่ายลงอย่างมาก
- การสนับสนุนไลบรารี C: ช่วยให้คุณสามารถนำไลบรารีที่เขียนด้วย C มาใช้ซ้ำได้ ช่วยให้บูรณาการโค้ดเก่าได้ง่ายขึ้น และเพิ่มประสิทธิภาพเมื่อจำเป็น
- รองรับโปรโตคอลและหมวดหมู่: คุณสามารถกำหนดอินเทอร์เฟซเชิงนามธรรมโดยใช้โปรโตคอล และเพิ่มวิธีการเพิ่มเติมให้กับคลาสที่มีอยู่โดยใช้หมวดหมู่
ไวยากรณ์และโครงสร้างพื้นฐานของ Objective-C
ไวยากรณ์ของ Objective-Cเป็นหนึ่งในลักษณะเด่นของภาษา และถึงแม้ว่าอาจดูแปลกตาในตอนแรก (โดยเฉพาะการใช้เครื่องหมายวงเล็บในการส่งข้อความ) แต่ก็ค่อนข้างสมเหตุสมผลและตรงไปตรงมาเมื่อคุณคุ้นเคยแล้ว นี่คือคำอธิบายองค์ประกอบหลัก ๆ:
- การประกาศตัวแปรและชนิดดั้งเดิม: เช่นเดียวกับใน C คุณสามารถประกาศตัวแปรง่ายๆ ได้เช่น
int,floatocharสำหรับวัตถุ จะใช้เครื่องหมายดอกจันก่อนชื่อตัวแปร (MyClass *objeto;). - กำลังส่งข้อความ: ในการเรียกใช้เมธอดของอ็อบเจ็กต์ ให้ใช้รูปแบบวงเล็บ:
; - คลาสและวิธีการ: คำจำกัดความของคลาสใช้ไฟล์สองไฟล์: อินเทอร์เฟซ (
.h) และการนำไปปฏิบัติ (.m). มีการใช้คำสั่ง@interfacey@implementation. - คุณสมบัติ: พวกเขาถูกกำหนดด้วย
@propertyและมักจะมาพร้อมกับ@synthesizeเพื่อใช้เมธอด getter และ setter โดยอัตโนมัติ - การควบคุมเดอฟลูโจ: คำสั่ง C แบบคลาสสิกมีอยู่:
if,else,switch,while,for. - ประเภทคอลเลกชัน: มีวัตถุสำหรับรายการ (NSArray, NSMutableArray), พจนานุกรม (NSDictionary, NSMutableDictionary) และชุด (NSSet, NSMutableSet)
ระบบนี้ช่วยให้นักพัฒนาสามารถสืบทอดตรรกะ C บางส่วนได้ แต่จะเพิ่มชั้นของการแยกส่วนและการสร้างโมดูลาร์ซึ่งมีมูลค่าสูงในโปรเจ็กต์ขนาดใหญ่
ตัวอย่างเชิงปฏิบัติ: Hello World ใน Objective-C
มาดูตัวอย่างพื้นฐานใน Objective-C ที่จะพิมพ์ "Hello World" ไปที่คอนโซลกันดีกว่า:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hola Mundo");
}
return 0;
}
ในส่วนนี้เราจะเห็นองค์ประกอบหลายประการ:
- #นำเข้า - นำเข้ากรอบงานวัตถุหลักของ Apple
- @autoreleasepool: จำเป็นสำหรับการจัดการหน่วยความจำวัตถุ โดยเฉพาะเมื่อไม่ได้ใช้ ARC
- บันทึก NS: ฟังก์ชั่นในการแสดงข้อมูลในคอนโซลเทียบเท่ากับ
printfในภาษา C แต่ปรับให้เข้ากับ Objective-C
แนวคิดเชิงวัตถุใน Objective-C
ภาษา Objective-C ใช้หลักการเขียนโปรแกรมเชิงวัตถุอย่างเต็มรูปแบบทำให้คุณสามารถทำงานกับคลาส วัตถุ การสืบทอด การห่อหุ้ม และพหุรูปได้ แต่ละคลาสสามารถกำหนดตัวแปรอินสแตนซ์ เมธอดและคุณสมบัติของตนเองได้ และสามารถขยายผ่านคลาสย่อยเพื่อสืบทอดและแก้ไขพฤติกรรมได้
นอกจากนี้ คุณสมบัติที่โดดเด่นอีกอย่างหนึ่งคือความสามารถในการส่งข้อความไปยังวัตถุต่างๆ ได้อย่างไดนามิก ซึ่งเอื้อต่อการพัฒนาโปรแกรมที่มีความยืดหยุ่นสูงและปรับตัวได้ในขณะทำงาน ซึ่งเป็นแนวคิดที่สืบทอดมาจาก Smalltalk โดยตรง
สิ่งที่น่าสนใจอีกอย่างคือความสามารถในการจัดระเบียบโค้ดโดยใช้หมวดหมู่ซึ่งช่วยให้สามารถเพิ่มฟังก์ชันการทำงานเพิ่มเติมให้กับคลาสที่มีอยู่โดยไม่ต้องสร้างคลาสย่อย และโปรโตคอลซึ่งทำให้สามารถกำหนดข้อตกลงของเมธอดที่คลาสสามารถนำไปใช้ได้ คล้ายกับอินเทอร์เฟซในภาษาโปรแกรมอื่นๆ
หมวดหมู่และส่วนขยายใน Objective-C
หมวดหมู่เป็นหนึ่งในเครื่องมือที่มีประสิทธิภาพที่สุดสำหรับการขยายฟังก์ชันการทำงานของคลาสโดยไม่ต้องแก้ไขโค้ดเดิมหรือสร้างคลาสย่อย ช่วยให้คุณสามารถเพิ่มเมธอดพิเศษให้กับคลาสใดก็ได้ แม้ว่าคุณจะไม่มีสิทธิ์เข้าถึงการใช้งานภายในของคลาสนั้น ซึ่งมีประโยชน์อย่างยิ่งสำหรับการจัดการโค้ดเบสขนาดใหญ่หรือการใช้งานฟังก์ชันส่วนตัว
ในส่วนของส่วนขยาย (หรือ “ส่วนขยายคลาส”) นั้น ทำหน้าที่ประกาศเมธอดและคุณสมบัติส่วนตัวภายในตัวการใช้งานของคลาสเอง ซึ่งช่วยให้สามารถห่อหุ้มและซ่อนรายละเอียดภายในได้ดียิ่งขึ้น
โปรโตคอลใน Objective-C
โปรโตคอลทำหน้าที่เป็นสัญญาเชิงนามธรรมที่กำหนดวิธีการที่คลาสต่างๆ สามารถนำไปใช้และใช้งานได้ ดังนั้น คลาสใดๆ ก็สามารถระบุการปฏิบัติตามโปรโตคอลเฉพาะและให้คำมั่นว่าจะนำวิธีการเหล่านั้นไปใช้ ซึ่งให้ความยืดหยุ่นอย่างมากและช่วยให้สามารถปฏิบัติตามรูปแบบต่างๆ เช่น การมอบหมายงาน (delegation) ซึ่งพบได้ทั่วไปในการพัฒนาแอปพลิเคชัน iOS และ macOS
ตัวอย่างเช่น โปรโตคอลอาจระบุวิธีการ เช่น turnOnEngine o beNiceToSister:และคลาสต่างๆ อาจนำโปรโตคอลเหล่านี้มาใช้ได้หากสนใจฟังก์ชันการทำงานดังกล่าว
การจัดการหน่วยความจำ: เก็บรักษา ปล่อย และ ARC
ในภาษา Objective-C การจัดการหน่วยความจำถือเป็นความท้าทายที่ใหญ่ที่สุดอย่างหนึ่งสำหรับโปรแกรมเมอร์มาโดยตลอด ก่อนการมาถึงของ ARC ( Automatic Reference Counting ) จำเป็นต้องควบคุมการเก็บรักษาและการปลดปล่อยหน่วยความจำของแต่ละอ็อบเจ็กต์ด้วยตนเอง ซึ่งเพิ่มความเสี่ยงต่อการรั่วไหลของหน่วยความจำและข้อผิดพลาดที่ตรวจจับได้ยาก
วงจรพื้นฐานประกอบไปด้วย:
- สร้างวัตถุ (
alloc). - ใช้สิ่งของ.
- ปล่อยวัตถุ (
releaseoautorelease).
ด้วย ARC ซึ่งถูกรวมอยู่ใน Xcode 4.2 และ iOS 4 คอมไพเลอร์จะแทรก คำสั่ง retain , releaseและautorelease โดยอัตโนมัติ ทำให้ชีวิตของนักพัฒนาซอฟต์แวร์ง่ายขึ้นอย่างมาก และทำให้ Objective-C มีประสบการณ์ใกล้เคียงกับภาษาโปรแกรมอื่นๆ ที่มีการจัดการหน่วยความจำอัตโนมัติ (garbage collection)
คุณสมบัติและคุณลักษณะ: การควบคุมการเข้าถึงและหน่วยความจำ
ลา คุณสมบัติใน Objective-C ถูกประกาศโดย @property และการจัดการจะเข้มแข็งขึ้นด้วยคุณลักษณะต่างๆ ซึ่งควบคุมวิธีการจัดเก็บและเข้าถึงค่าแต่ละค่า คุณลักษณะหลักๆ มีดังนี้:
- กำหนด: กำหนดค่าโดยตรง โดยไม่คงไว้หรือปล่อยวัตถุ (โดยปกติใช้สำหรับประเภทดั้งเดิมหรือการอ้างอิงที่อ่อนแอ)
- เก็บรักษาไว้: รักษาการอ้างอิงที่แข็งแกร่งไปยังวัตถุ โดยเพิ่มตัวนับทุกครั้งที่มีการกำหนด
- สำเนา: สร้างสำเนาของวัตถุที่กำหนด ซึ่งมีประโยชน์สำหรับสตริงข้อความหรือวัตถุที่ไม่เปลี่ยนแปลง
- อ่อนแอ: นำเสนอด้วย ARC กำหนดการอ้างอิงที่อ่อนแอที่ตั้งค่าโดยอัตโนมัติ
nilเมื่อวัตถุต้นฉบับถูกปล่อยออกมา - แข็งแกร่ง: การอ้างอิงที่แข็งแกร่งช่วยให้แน่ใจว่าตราบใดที่คุณสมบัติยังคงมีอยู่ วัตถุจะพร้อมใช้งานในหน่วยความจำ
ความละเอียดระดับนี้ช่วยให้นักพัฒนาสามารถปรับการใช้ทรัพยากรให้เหมาะสมและหลีกเลี่ยงข้อผิดพลาดในการเข้าถึงหน่วยความจำได้
การเปรียบเทียบ: Objective-C กับ Swift
นับตั้งแต่ปี 2014 การพัฒนาสำหรับระบบนิเวศของ Apple นั้นมีลักษณะเด่นคือการใช้งานObjective-C และ Swift ควบคู่กัน ไป ภาษาทั้งสองมีจุดแข็งและจุดอ่อน และการเลือกใช้ขึ้นอยู่กับประเภทของโครงการและประสบการณ์ของทีมพัฒนาเป็นอย่างมาก
ข้อดีหลักๆ ของ Objective-Cได้แก่:
- ความเข้ากันได้โดยตรงกับ C และ C++: ช่วยให้คุณสามารถผสมผสานโค้ดที่จำเป็นและโค้ดเชิงวัตถุ ซึ่งถือว่าได้รับความนิยมอย่างมากในแอปพลิเคชันที่ต้องการประสิทธิภาพที่แท้จริง
- ความเป็นผู้ใหญ่และความมั่นคง: เป็นภาษาที่ได้รับการทดสอบมานานหลายปี มีชุมชนขนาดใหญ่และมีเอกสารประกอบมากมาย
- พลวัต: ระบบการส่งข้อความและการสะท้อนกลับทำให้คุณสามารถปรับเปลี่ยนพฤติกรรมของแอพพลิเคชันในระหว่างการรันไทม์ได้
ส่วนสวิฟต์ก็มีส่วนสนับสนุนดังนี้:
- รับประกันความปลอดภัยที่มากขึ้น: ด้วยการพิมพ์แบบคงที่ การจัดการข้อผิดพลาด และการจัดการหน่วยความจำที่ทันสมัย
- โครงสร้างประโยคชัดเจนและกระชับยิ่งขึ้น: มันช่วยให้การเขียนและดูแลรักษาโค้ดสะดวกยิ่งขึ้น โดยเฉพาะสำหรับผู้ที่ไม่ได้มาจากโลก C
- เครื่องมือที่ทันสมัย: รองรับเนมสเปซ การพัฒนาเชิงโต้ตอบด้วยสนามเด็กเล่น และรูปแบบฟังก์ชันได้อย่างยอดเยี่ยม
เมื่อมองไปข้างหน้า ทุกอย่างบ่งชี้ว่า Swift จะยังคงได้รับความนิยมเพิ่มขึ้นเรื่อยๆ แต่Objective-C จะยังคงมีความสำคัญในโครงการขนาดใหญ่ที่ใช้งานมานานแล้ว และในการทำงานร่วมกับเฟรมเวิร์กเก่าๆ
ข้อดีและข้อเสียของ Objective-C เมื่อเทียบกับ Swift
ควรพิจารณาประเด็นสำคัญบางประการที่อาจส่งผลต่อการเลือกใช้ภาษาใดภาษาหนึ่ง:
- วัตถุประสงค์-C:
- ช่วยให้คุณทำงานกับไลบรารี C และ C++ ได้อย่างมีประสิทธิภาพ
- มันมีคุณสมบัติไดนามิก เช่น การสลับวิธีการที่ช่วยให้คุณสามารถปรับเปลี่ยนพฤติกรรมในระหว่างการรันไทม์ได้
- เข้ากันได้กับเฟรมเวิร์กไบนารีและไลบรารีของบุคคลที่สามที่มีอยู่
- อย่างไรก็ตาม มันมีเนมสเปซขนาดเล็ก ซึ่งอาจทำให้เกิดความขัดแย้งในโปรเจ็กต์ขนาดใหญ่ และข้อผิดพลาดที่แก้ไขได้ยาก
- รูปแบบโครงสร้างอาจดูซับซ้อนและล้าสมัยสำหรับโปรแกรมเมอร์มือใหม่
- สวิฟท์:
- การพิมพ์แบบคงที่และไวยากรณ์สมัยใหม่ช่วยเพิ่มความปลอดภัยและประสิทธิภาพการทำงาน
- การสนับสนุนขั้นสูงสำหรับรูปแบบฟังก์ชันและการจัดการโค้ดแบบโต้ตอบด้วย Playgrounds
- การคอมไพล์ช้าลงในโปรเจ็กต์ขนาดใหญ่และมีความไม่เสถียรบางประการในรูปแบบโมดูลหรือการทำงานร่วมกันกับ C++
พื้นฐานเชิงปฏิบัติและตัวอย่างโค้ด
สำหรับผู้ที่เพิ่งเริ่มใช้ Objective-C การทบทวนตัวอย่างการใช้งานจริงในโปรเจ็กต์ต่างๆ อาจเป็นประโยชน์ ต่อไปนี้คือโครงสร้างและแนวคิดสำคัญบางส่วน:
การประกาศคลาสและวิธีการ
// Archivo de cabecera: MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@property int contador;
- (void)incrementar;
@end
// Archivo de implementación: MyClass.m
#import "MyClass.h"
@implementation MyClass
- (void)incrementar {
self.contador++;
}
@end
ในตัวอย่างนี้MyClassสืบทอดมาจากNSObjectซึ่งเป็นคลาสพื้นฐานของอ็อบเจ็กต์ส่วนใหญ่ใน Cocoa
การใช้อาร์เรย์และพจนานุกรม
NSArray *array = @;
NSString *elemento = array; // "dos"
NSDictionary *diccionario = @{ @"clave1": @"valor1", @"clave2": @"valor2" };
NSString *valor = diccionario; // "valor1"
ลูปและโครงสร้างควบคุม
for (int i = 0; i < 5; i++) { NSLog(@"Iteración %d", i); } if (array.count > 2) {
NSLog(@"El array tiene más de dos elementos");
}
การจัดการหน่วยความจำแบบคลาสสิก (ไม่มี ARC)
MyClass *objeto = init];
// Se usa el objeto
; // Liberar cuando termine de usarse
ความเข้ากันได้และแพลตฟอร์มที่รองรับ
แม้ว่า Objective-C จะแยกไม่ออกจากระบบนิเวศของ Apple แต่การใช้งานอย่าง GNUstepก็ช่วยให้สามารถพัฒนาด้วยภาษานี้บนแพลตฟอร์มอื่นๆ ได้ รวมถึง Linux และ Windows อย่างไรก็ตาม การใช้งานนอกเหนือจากสภาพแวดล้อม macOS และ iOS นั้นมีจำกัดมาก และโดยทั่วไปแล้วจะเกี่ยวข้องกับโครงการเฉพาะกลุ่มหรือการทำงานร่วมกันกับโค้ดเก่าๆObjective-C คืออะไร?
ภายใน Apple Objective-C ยังคงได้รับการสนับสนุนบน macOS, iOS, iPadOS, tvOS และ watchOS เวอร์ชันใหม่ทั้งหมด และเป็นตัวเลือกที่ใช้งานได้ทั้งใน Xcode และเครื่องมือบรรทัดคำสั่ง
แหล่งข้อมูลและการเรียนรู้ Objective-C
สำหรับผู้ที่ต้องการเรียนรู้หรือพัฒนาทักษะ Objective-C มีแหล่งข้อมูล บทช่วยสอน และหลักสูตรออนไลน์มากมายให้เลือก ตั้งแต่แพลตฟอร์มของมหาวิทยาลัยและโรงเรียนฝึกอบรมด้านเทคนิค ไปจนถึงช่องวิดีโอและเอกสารอย่างเป็นทางการของ Apple การเรียนรู้จึงง่ายและหลากหลายเรียนรู้วิธีการเป็นนักพัฒนาแอปพลิเคชันมือถือที่ประสบความสำเร็จ
ตัวเลือกการฝึกอบรมที่พบบ่อยที่สุด ได้แก่:
- วิดีโออธิบาย
- หนังสืออิเล็กทรอนิกส์และคู่มือการใช้งาน
- บทช่วยสอนทีละขั้นตอนทั้งข้อความและวิดีโอ
- ชุมชนนักพัฒนาออนไลน์และฟอรัมทางเทคนิค
- หลักสูตรบนแพลตฟอร์มเฉพาะทางตั้งแต่ระดับพื้นฐานไปจนถึงระดับสูง
นอกจากนี้ แพลตฟอร์มเหล่านี้หลายแห่งยังเสนอการรับรองให้กับผู้ที่สำเร็จหลักสูตรการฝึกอบรม ซึ่งอาจเป็นข้อดีเมื่อมองหางานในภาคส่วนนี้
เหตุใดจึงต้องเรียน Objective-C วันนี้?
ในปัจจุบัน การเรียนรู้ Objective-C อาจดูเหมือนไร้ประโยชน์ โดยเฉพาะอย่างยิ่งหากเป้าหมายหลักของคุณคือการเริ่มต้นโปรเจกต์ใหม่ อย่างไรก็ตามการเรียนรู้ให้เชี่ยวชาญยังคงเป็นสิ่งที่แนะนำอย่างยิ่งหากคุณจะทำงานในบริษัทที่มีโค้ดเบสเก่า บำรุงรักษาแอปพลิเคชันที่ใช้งานอยู่แล้ว หรือหากคุณสนใจในกลไกการทำงานภายในของแพลตฟอร์ม Apple ความเข้ากันได้ของ Objective-C กับ Swift ช่วยให้ทั้งสองภาษาสามารถทำงานร่วมกันได้ในโปรเจกต์เดียวกัน ทำให้การย้ายแอปพลิเคชันเป็นไปอย่างค่อยเป็นค่อยไปโดยไม่ต้องสร้างทุกอย่างใหม่ตั้งแต่ต้น
นอกจากนี้ ข้อเท็จจริงที่ว่าObjective-C ยังคงเป็นมาตรฐานทางเทคนิคในหลายแง่มุมของการพัฒนา iOS และ macOS รับประกันความสำคัญของภาษาโปรแกรมนี้ในตลาดงาน โดยเฉพาะอย่างยิ่งสำหรับตำแหน่งระดับสูง และบทบาทผู้นำด้านสถาปัตยกรรมหรือเทคนิค
ตลอดการเดินทางนี้ คุณได้เห็นว่าภาษา Objective-Cได้สร้างจุดเปลี่ยนสำคัญในการพัฒนาซอฟต์แวร์ของ Apple และปรัชญาของมัน ซึ่งอยู่บนพื้นฐานของการขยายภาษา C และการนำแนวคิดเชิงวัตถุมาใช้ ได้ช่วยให้สร้างแอปพลิเคชันที่แข็งแกร่ง ยืดหยุ่น และปรับเปลี่ยนได้สูง แม้ว่าความนิยมของ Swift จะเข้ามาแทนที่การใช้งาน Objective-C ไปบ้างแล้ว แต่การเชี่ยวชาญ Objective-C ยังคงเป็นสิ่งสำคัญพื้นฐานสำหรับนักพัฒนาทุกคนที่ต้องการใช้งานระบบนิเวศของ Apple ได้อย่างง่ายดาย และรับมือกับความท้าทายของการเขียนโปรแกรมสมัยใหม่และการบำรุงรักษาโครงการขนาดใหญ่ ไม่ว่าจะเป็นด้วยเหตุผลด้านความเข้ากันได้ สถาปัตยกรรมแบบเดิม หรือเพียงเพราะความอยากรู้อยากเห็นทางเทคนิค การเรียนรู้ Objective-C จะเปิดประตูสู่ประวัติศาสตร์และปัจจุบันของการประมวลผลสำหรับผู้บริโภค
