ภาษาการเขียนโปรแกรม Objective-C

ภาพรวม

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

ด้านประวัติศาสตร์

การสร้างและการพัฒนาในช่วงแรก

Objective-C ถูกสร้างขึ้นในช่วงต้นทศวรรษ 1980 โดย Brad Cox และ Tom Love ที่ Stepstone บริษัทซอฟต์แวร์ แรงจูงใจในการสร้างมันคือการให้โมเดลการเขียนโปรแกรมที่ยืดหยุ่นมากขึ้นสำหรับนักพัฒนาที่สร้างซอฟต์แวร์สำหรับพาราไดม์เชิงวัตถุที่กำลังเติบโต ภาษาได้รับการพัฒนาขึ้นโดยการเพิ่มความสามารถในการส่งข้อความที่คล้ายกับ Smalltalk ซึ่งช่วยให้มีวิธีการเขียนโปรแกรมที่พลศาสตร์มากขึ้น

การนำไปใช้โดย NeXT และอิทธิพลของ Apple

ในช่วงปลายทศวรรษ 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

Objective-C ถูกใช้หลักในการพัฒนาแอปพลิเคชันสำหรับ macOS และ iOS มันเป็นกระดูกสันหลังของแอปพลิเคชันเก่าหลายตัวและยังคงถูกใช้ร่วมกับ Swift สำหรับแอปพลิเคชันสมัยใหม่ แอปพลิเคชันที่โดดเด่นได้แก่:

การเปรียบเทียบกับภาษาที่คล้ายกัน

เมื่อเปรียบเทียบกับภาษาการเขียนโปรแกรมที่เกี่ยวข้อง Objective-C มีจุดแข็งและจุดอ่อนที่เป็นเอกลักษณ์ของมัน

เคล็ดลับการแปลจากแหล่งที่มาไปยังแหล่งที่มา

สำหรับการแปล Objective-C ไปยังภาษาต่าง ๆ ให้พิจารณาดังนี้:

เครื่องมือการแปลโค้ดจากแหล่งที่มีอยู่สำหรับ Objective-C ได้แก่: