Objective-C เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่เพิ่มการส่งข้อความในสไตล์ Smalltalk ให้กับภาษาการเขียนโปรแกรม C มันเป็นภาษาการเขียนโปรแกรมหลักที่ใช้โดย Apple สำหรับการพัฒนา macOS และ iOS จนกระทั่งมีการแนะนำ Swift ในปี 2014 Objective-C รวมประสิทธิภาพและประสิทธิผลของ C เข้ากับความยืดหยุ่นและความสามารถทางพลศาสตร์ของ Smalltalk ทำให้เหมาะสมสำหรับการพัฒนาแอปพลิเคชันบนแพลตฟอร์มของ Apple ไวยากรณ์และโครงสร้างของมันช่วยให้สามารถสร้างแอปพลิเคชันที่ซับซ้อนได้ในขณะที่ยังคงความอ่านง่ายและความสะดวกในการรวมเข้ากับภาษาที่ใช้ C อื่น ๆ
Objective-C ถูกสร้างขึ้นในช่วงต้นทศวรรษ 1980 โดย Brad Cox และ Tom Love ที่ Stepstone บริษัทซอฟต์แวร์ แรงจูงใจในการสร้างมันคือการให้โมเดลการเขียนโปรแกรมที่ยืดหยุ่นมากขึ้นสำหรับนักพัฒนาที่สร้างซอฟต์แวร์สำหรับพาราไดม์เชิงวัตถุที่กำลังเติบโต ภาษาได้รับการพัฒนาขึ้นโดยการเพิ่มความสามารถในการส่งข้อความที่คล้ายกับ Smalltalk ซึ่งช่วยให้มีวิธีการเขียนโปรแกรมที่พลศาสตร์มากขึ้น
ในช่วงปลายทศวรรษ 1980 NeXT Computer ซึ่งก่อตั้งโดย Steve Jobs ได้นำ Objective-C ไปใช้ในระบบปฏิบัติการ NeXTSTEP ซึ่งออกแบบมาเพื่ออำนวยความสะดวกในการพัฒนาแอปพลิเคชันในสภาพแวดล้อมเครือข่าย การตัดสินใจนี้จะได้รับผลตอบแทนอย่างมากเมื่อ Apple ซื้อ NeXT ในปี 1997 ทำให้ Objective-C กลายเป็นพื้นฐานสำหรับการพัฒนา macOS และ iOS
แม้ว่าจะมีการแนะนำ Swift ในปี 2014 ซึ่งออกแบบมาให้เป็นทางเลือกที่ปลอดภัยและทันสมัยกว่าสำหรับ Objective-C แต่ Objective-C ยังคงเป็นส่วนสำคัญของระบบนิเวศของ Apple แอปพลิเคชันเก่าหลายตัวยังคงใช้ Objective-C และมันได้รับการสนับสนุนควบคู่ไปกับ Swift ในสภาพแวดล้อมการพัฒนาปัจจุบัน ความสามารถในการทำงานแบบพลศาสตร์และการส่งข้อความของ Objective-C ยังคงมีอิทธิพลต่อการออกแบบของภาษาที่ใหม่กว่าและเฟรมเวิร์กต่าง ๆ
Objective-C เป็นภาษาที่มีพื้นฐานเชิงวัตถุ ช่วยให้นักพัฒนาสามารถกำหนดคลาส วัตถุ และวิธีการได้ ซึ่งช่วยในการจัดระเบียบและทำให้โค้ดมีโมดูลที่มีประสิทธิภาพ
@interface MyClass : NSObject
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"Hello from MyClass!");
}
@end
Objective-C อนุญาตให้มีการกำหนดประเภทแบบพลศาสตร์ ซึ่งช่วยให้ตัวแปรสามารถถือวัตถุจากคลาสต่าง ๆ ในระหว่างการทำงาน ซึ่งมีประโยชน์สำหรับรูปแบบการเขียนโค้ดที่ยืดหยุ่นมากขึ้น
id myObject = [[MyClass alloc] init];
แทนที่จะใช้การเรียกฟังก์ชันแบบดั้งเดิม Objective-C ใช้ไวยากรณ์การส่งข้อความที่คล้ายกับ Smalltalk ซึ่งช่วยให้มีการแก้ไขวิธีการที่พลศาสตร์มากขึ้น
[myObject myMethod];
หมวดหมู่ช่วยให้นักพัฒนาสามารถเพิ่มวิธีการให้กับคลาสที่มีอยู่โดยไม่ต้องสร้างคลาสย่อย ซึ่งมีประโยชน์โดยเฉพาะสำหรับการขยายไลบรารีของบุคคลที่สาม
@interface NSString (MyCategory)
- (NSString *)reverseString;
@end
โปรโตคอลใน Objective-C คล้ายกับอินเตอร์เฟซในภาษาต่าง ๆ ช่วยให้สามารถกำหนดวิธีการที่สามารถนำไปใช้โดยคลาสใด ๆ
@protocol MyProtocol
- (void)requiredMethod;
@end
Objective-C มีฟีเจอร์คุณสมบัติที่ช่วยให้การห่อหุ้มตัวแปรของคลาสง่ายขึ้น โดยจัดการวิธีการ getter และ setter โดยอัตโนมัติ
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end
ภาษานี้ใช้การนับอ้างอิงแบบแมนนวล (MRC) และการนับอ้างอิงอัตโนมัติ (ARC) เพื่อจัดการหน่วยความจำอย่างมีประสิทธิภาพ
self.name = [[NSString alloc] initWithFormat:@"Hello"];
Objective-C รองรับบล็อก ซึ่งคล้ายกับ closures ในภาษาต่าง ๆ และอนุญาตให้มีการกำหนดและดำเนินการฟังก์ชันในบรรทัดเดียว
void (^myBlock)(void) = ^{
NSLog(@"Hello from Block!");
};
Objective-C มีโครงสร้างทางไวยากรณ์ที่ช่วยในรูปแบบการเขียนโปรแกรมทั่วไป เช่น การสร้างอาร์เรย์อย่างกระชับและลิตเติลดิกชันนารี
NSArray *array = @[@"One", @"Two", @"Three"];
Objective-C ใช้ระบบการจัดการข้อผิดพลาดที่ไม่เหมือนใครโดยใช้ NSError
ซึ่งช่วยให้วิธีการสามารถส่งคืนข้อผิดพลาดได้โดยไม่ต้องใช้ข้อยกเว้น
NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];
Xcode เป็นสภาพแวดล้อมการพัฒนาที่รวม (IDE) หลักสำหรับ Objective-C โดยให้ชุดเครื่องมือที่แข็งแกร่งสำหรับการพัฒนา การดีบัก และการปรับใช้แอปพลิเคชันบนแพลตฟอร์มของ Apple มันรวมถึงเครื่องมือสร้างอินเตอร์เฟซแบบภาพและเอกสารประกอบที่กว้างขวาง
โค้ด Objective-C มักจะถูกคอมไพล์โดยใช้คอมไพเลอร์ Clang ซึ่งเป็นส่วนหนึ่งของโครงการ LLVM Clang มีเวลาคอมไพล์ที่รวดเร็ว การวินิจฉัยข้อผิดพลาดที่ยอดเยี่ยม และสนับสนุนมาตรฐานล่าสุดของ C และ Objective-C
ในการสร้างโปรเจกต์ใน Xcode นักพัฒนาจะสร้างโปรเจกต์ใหม่ กำหนดค่าการตั้งค่าการสร้าง และใช้ Interface Builder เพื่อออกแบบส่วนประกอบ UI แบบภาพ การสร้างและรันแอปพลิเคชันสามารถทำได้โดยตรงภายใน Xcode ด้วยการคลิกปุ่มเดียว
Objective-C ถูกใช้หลักในการพัฒนาแอปพลิเคชันสำหรับ macOS และ iOS มันเป็นกระดูกสันหลังของแอปพลิเคชันเก่าหลายตัวและยังคงถูกใช้ร่วมกับ Swift สำหรับแอปพลิเคชันสมัยใหม่ แอปพลิเคชันที่โดดเด่นได้แก่:
เมื่อเปรียบเทียบกับภาษาการเขียนโปรแกรมที่เกี่ยวข้อง Objective-C มีจุดแข็งและจุดอ่อนที่เป็นเอกลักษณ์ของมัน
สำหรับการแปล Objective-C ไปยังภาษาต่าง ๆ ให้พิจารณาดังนี้:
เครื่องมือการแปลโค้ดจากแหล่งที่มีอยู่สำหรับ Objective-C ได้แก่: