Objective-C یک زبان برنامهنویسی شیءگرا است که پیامرسانی به سبک Smalltalk را به زبان برنامهنویسی C اضافه میکند. این زبان تا زمان معرفی Swift در سال ۲۰۱۴، زبان اصلی برنامهنویسی مورد استفاده اپل برای توسعه macOS و iOS بود. Objective-C کارایی و عملکرد C را با انعطافپذیری و قابلیتهای پویا Smalltalk ترکیب میکند و آن را برای توسعه برنامهها در پلتفرمهای اپل مناسب میسازد. نحو و ساختار آن اجازه میدهد تا برنامههای پیچیدهای ایجاد شود در حالی که خوانایی و سهولت ادغام با سایر زبانهای مبتنی بر C حفظ میشود.
Objective-C در اوایل دهه ۱۹۸۰ توسط براد ککس و تام لاو در شرکت نرمافزاری Stepstone ایجاد شد. انگیزه پشت ایجاد آن، ارائه یک مدل برنامهنویسی انعطافپذیرتر برای توسعهدهندگانی بود که نرمافزارهایی برای پارادایم شیءگرا در حال رشد میساختند. این زبان با افزودن قابلیتهای پیامرسانی مشابه Smalltalk به C توسعه یافت که رویکردی پویا به برنامهنویسی را ممکن میساخت.
در اواخر دهه ۱۹۸۰، شرکت NeXT Computer که توسط استیو جابز تأسیس شده بود، Objective-C را برای سیستمعامل NeXTSTEP خود که برای تسهیل توسعه برنامهها در یک محیط شبکه طراحی شده بود، پذیرفت. این تصمیم بعداً به شدت سودآور بود زمانی که اپل در سال ۱۹۹۷ NeXT را خرید و منجر به تبدیل Objective-C به پایهای برای توسعه macOS و iOS شد.
با وجود معرفی Swift در سال ۲۰۱۴ که به عنوان یک جایگزین ایمنتر و مدرنتر برای Objective-C طراحی شده بود، این زبان همچنان بخشی مهم از اکوسیستم اپل باقی مانده است. بسیاری از برنامههای قدیمی هنوز از 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 است که مجموعهای قوی از ابزارها برای توسعه، اشکالزدایی و استقرار برنامهها در پلتفرمهای اپل ارائه میدهد. این شامل یک سازنده رابط بصری و مستندات گسترده است.
کد Objective-C معمولاً با استفاده از کامپایلر Clang که بخشی از پروژه LLVM است، کامپایل میشود. Clang زمانهای کامپایل سریع، تشخیص خطای عالی و پشتیبانی از آخرین استانداردهای C و Objective-C را ارائه میدهد.
برای ساخت یک پروژه در Xcode، توسعهدهندگان یک پروژه جدید ایجاد میکنند، تنظیمات ساخت را پیکربندی میکنند و از Interface Builder برای طراحی بصری اجزای UI استفاده میکنند. ساخت و اجرای برنامه میتواند به طور مستقیم در Xcode با یک کلیک دکمه انجام شود.
Objective-C عمدتاً برای توسعه برنامهها برای macOS و iOS استفاده میشود. این زبان پایه بسیاری از برنامههای قدیمی است و همچنان در ترکیب با Swift برای برنامههای مدرن استفاده میشود. برنامههای قابل توجه شامل:
هنگام مقایسه با زبانهای برنامهنویسی مرتبط، Objective-C نقاط قوت و ضعف منحصر به فرد خود را دارد.
برای ترجمه Objective-C به زبانهای دیگر، موارد زیر را در نظر بگیرید:
ابزارهای موجود برای ترجمه کد از منبع به منبع برای Objective-C شامل: