Objective-C: كل ما تحتاج إلى معرفته عن لغة برمجة Apple الرئيسية

آخر تحديث: 19 دي دي junio 2025
نبذة عن الكاتب: تكنوديجيتال
  • Objective-C هي لغة برمجة كائنية التوجه تم إنشاؤها كامتداد للغة C وتم استخدامها لعقود من الزمن في تطوير التطبيقات لشركة Apple.
  • تتميز بمرونتها ومزيجها من كود C والتوجه نحو الكائنات والتوافق مع واجهات برمجة التطبيقات والأطر القديمة ونظام المراسلة الديناميكي.
  • إنه يتواجد حاليًا جنبًا إلى جنب مع Swift في مشاريع Apple ويظل ضروريًا لصيانة وتشغيل التطبيقات والمكتبات القديمة.

لغة البرمجة Objective-C

تُعدّ لغة Objective-C إحدى لغات البرمجة التي، رغم تراجع شعبيتها مؤخرًا أمام صعود لغة Swift، لا تزال أداةً أساسيةً في تاريخ برمجة أنظمة Apple وحاضرها. إذا كنت قد سمعتَ عن إنشاء تطبيقات لنظامي iOS أو macOS ، فمن المؤكد أنك قد صادفتَ هذه اللغة، إذ كانت حجر الزاوية في تطوير تطبيقات Apple لأكثر من عقدين.

في هذه المقالة، سنستكشف كل ما تحتاج معرفته لفهم لغة Objective-C : أبرز سماتها، وأصولها، ومجالات استخدامها الحالية، ومقارنتها بلغات بديلة مثل Swift. ستجد أيضًا أمثلة عملية تساعدك على فهم تركيبها، وبنيتها، وقدراتها، بالإضافة إلى جوانب أساسية لإدارة الذاكرة، ونموذج البرمجة الكائنية، والبروتوكولات، وغير ذلك الكثير. استعدوا، لأننا سنغوص في كل زاوية من زوايا هذه اللغة الرائعة.

ما هو Objective-C؟

لغة Objective-C هي لغة برمجة كائنية التوجه مصممة لتوسيع لغة C، ومنحها قدرات نموذجية للغات البرمجة الكائنية، وخاصة تلك المستوحاة من لغة Smalltalk. تعود أصولها إلى ثمانينيات القرن الماضي، بفضل براد كوكس وشركة StepStone، بهدف تزويد لغة C بنظام مراسلة على غرار Smalltalk يسمح بمرونة أكبر وقابلية للتعديل في البرمجة.

على عكس لغة C البحتة ، تتيح لك لغة Objective-C إنشاء الكائنات ومعالجتها، مما يعني أنه يمكنك هيكلة التعليمات البرمجية الخاصة بك حول كيانات تمتلك بيانات ووظائف مرتبطة بها. يُعد هذا مفيدًا بشكل خاص في تطوير التطبيقات المعقدة، حيث يُعزز تنظيم التعليمات البرمجية وإعادة استخدامها وصيانتها.

من بين الإنجازات العظيمة للغة Objective-C أن تركيبها وطريقة عملها تسمح بدمج التعليمات البرمجية المكتوبة بلغة C مع الوظائف الموجهة للكائنات ، مما يسهل الانتقال من مشاريع C الحالية ودمج ميزات جديدة أكثر تقدماً.

تاريخ وتطور Objective-C

تعود أصول لغة Objective-C إلى ثمانينيات القرن الماضي، عندما أدرك براد كوكس وتوم لوف، مطورا البرمجيات في شركة StepStone، الحاجة إلى إضافة إمكانيات إلى لغة C تُضاهي تلك الموجودة في لغة Smalltalk، التي كانت اللغة الرائدة في البرمجة الكائنية التوجه آنذاك. كان هدفهما دمج قوة وسرعة وشعبية لغة C مع مرونة لغة Smalltalk، لإنشاء لغة هجينة تجمع أفضل ما في اللغتين.

صدرت النسخة الأولى عام 1984، واعتمدتها لاحقًا شركات مثل NeXT، الشركة التي أسسها ستيف جوبز بعد انفصاله المؤقت عن شركة آبل. دمجت NeXT لغة Objective-C كلغة رئيسية لنظام التشغيل NeXTSTEP، مما وضع الأساس لما سيصبح لاحقًا نظامي macOS وiOS عندما استحوذت آبل على NeXT في أواخر التسعينيات.

منذ ذلك الحين، ولقرابة ثلاثين عامًا، أصبحت لغة Objective-C المعيارَ المُعتمد لتطوير البرمجيات على أنظمة تشغيل Apple. في عام ٢٠١٤، أعلنت Apple عن Swift كلغة مرجعية جديدة لتطوير التطبيقات، إلا أن Objective-C ظلت جزءًا أساسيًا من النظام البيئي، خاصةً لصيانة التطبيقات الحالية والوصول إلى واجهات برمجة التطبيقات (APIs) وأطر العمل القديمة التي لم تُنقل بعد.

حالياً ، على الرغم من أن لغة 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 القديمة: تتوفر العديد من ميزات النظام بهذه اللغة فقط، مما يجعلها ضرورية للحفاظ على المشاريع طويلة الأمد وتحسينها.
  • الأطر والمكتبات الملكية: من الشائع أن تستمر فرق التطوير الكبيرة في صيانة مكتبات Objective-C لتحقيق الكفاءة والتوافق.
  • التوافق مع GNUstep والمنصات الأخرى: بالإضافة إلى Apple، تسمح التنفيذات الأخرى مثل GNUstep باستخدام Objective-C على أنظمة غير تابعة لشركة Apple.
  تطوير لغة روبي: اللغة، والنظام البيئي، والاستخدامات الحالية

الميزات الرئيسية لـ Objective-C

تقدم لغة Objective-C عدداً من الميزات التي تحظى بتقدير كبير من قبل المبرمجين، وخاصة أولئك القادمين من عالم لغة C. فيما يلي، نستعرض أهم هذه الميزات لفهم ما يجعلها فريدة مقارنة باللغات الأخرى:

  • اللغة الموجهة للكائنات: يدور كل شيء حول الكائنات، مما يسمح بتعريف الفئات، والوراثة، والتعدد الأشكال، والتغليف، بالإضافة إلى تقسيم الكود بشكل واضح.
  • مجموعة فرعية من C: إنه يحافظ على جميع وظائف C، مما يسمح بإدراج مجموعات التعليمات التقليدية (مثل while, for, do-while) والتلاعب بالبيانات البدائية جنبًا إلى جنب مع الكائنات.
  • الرسائل بأسلوب المحادثة الصغيرة: يتم تنفيذ استدعاء الطريقة عن طريق إرسال رسائل إلى الكائنات، مما يوفر قدرًا كبيرًا من المرونة والديناميكية للتطوير.
  • إدارة الذاكرة الصريحة: على عكس لغات البرمجة الحديثة ذات إدارة الذاكرة التلقائية، يتطلب Objective-C من المبرمج التحكم في إنشاء كل كائن وإصداره، على الرغم من أنه منذ عام 2011 مع وصول ARC (العد التلقائي للمراجع)، تم تبسيط هذه المهمة بشكل كبير.
  • دعم مكتبة C: إنه يسمح لك بإعادة استخدام المكتبات المكتوبة بلغة C، مما يسهل دمج الكود القديم ويزيد الأداء عند الضرورة.
  • دعم البروتوكولات والفئات: يمكنك تعريف واجهات مجردة باستخدام البروتوكولات، وإضافة طرق إضافية إلى الفئات الموجودة باستخدام الفئات.

بناء الجملة والبنية الأساسية في Objective-C

تُعدّ بنية لغة Objective-C إحدى سماتها المميزة، ورغم أنها قد تبدو غريبة للوهلة الأولى (خاصةً استخدام الأقواس لإرسال الرسائل)، إلا أنها منطقية ومباشرة للغاية بمجرد التعود عليها. إليك شرحًا لأهم عناصرها:

  • إعلان المتغيرات والأنواع البدائية: تمامًا كما هو الحال في لغة C، يمكنك إعلان متغيرات بسيطة مثل int, float o charبالنسبة للأشياء، يتم استخدام علامة النجمة قبل اسم المتغير (MyClass *objeto;).
  • إرسال الرسائل: لاستدعاء طريقة لكائن ما، يمكنك استخدام صيغة الأقواس: ;
  • الفئات والطرق: يتطلب تعريف الفصل ملفين: الواجهة (.h) والتنفيذ (.m). يتم استخدام التوجيهات @interface y @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.
  • سجل NSLog: وظيفة لعرض المعلومات في وحدة التحكم، تعادل printf في C ولكن تم تكييفها إلى Objective-C.

نموذج البرمجة الكائنية التوجه في Objective-C

تعتمد لغة Objective-C بالكامل على نموذج البرمجة الكائنية ، مما يتيح لك العمل مع الأصناف والكائنات والوراثة والتغليف وتعدد الأشكال. يمكن لكل صنف تعريف متغيرات النسخة، وأساليبه وخصائصه الخاصة، ويمكن توسيعه من خلال الأصناف الفرعية لتوريث السلوكيات وتعديلها.

علاوة على ذلك، تتمثل إحدى الميزات الفريدة في القدرة على إرسال الرسائل ديناميكيًا إلى الكائنات، مما يُسهّل تطوير برامج مرنة للغاية مع إمكانية التكيف أثناء التشغيل، وهي فكرة موروثة مباشرة من لغة Smalltalk.

ومن الجدير بالذكر أيضًا القدرة على تنظيم التعليمات البرمجية باستخدام الفئات ، والتي تسمح بإضافة وظائف إضافية إلى الفئات الموجودة دون إنشاء فئات فرعية، والبروتوكولات ، والتي تجعل من الممكن تحديد عقود الأساليب التي يمكن للفئات اعتمادها، على غرار الواجهات في اللغات الأخرى.

الفئات والإضافات في Objective-C

تُعدّ التصنيفات من أقوى الأدوات لتوسيع وظائف فئة ما دون تعديل شفرتها الأصلية أو إنشاء فئات فرعية. فهي تتيح لك إضافة طرق إضافية إلى أي فئة، حتى لو لم يكن لديك صلاحية الوصول إلى تنفيذها، وهو أمر مفيد للغاية لتنظيم قواعد البيانات الضخمة أو تنفيذ وظائف خاصة.

  إطار عمل Laravel القوي

أما بالنسبة للامتدادات (أو "امتدادات الفئة") فهي تعمل على تعريف الطرق والخصائص الخاصة داخل تطبيق الفئة نفسه، مما يسمح بتغليف أكبر وإخفاء التفاصيل الداخلية.

البروتوكولات في Objective-C

تعمل البروتوكولات كعقود مجردة تحدد الأساليب التي يمكن للفئات تبنيها وتنفيذها. وبالتالي، يمكن لأي فئة الإشارة إلى التزامها ببروتوكول معين والتعهد بتنفيذ أساليبه. يوفر هذا مرونة كبيرة ويساعد على تحقيق أنماط مثل التفويض، الشائعة جدًا في تطوير تطبيقات iOS و macOS.

على سبيل المثال، قد يحدد البروتوكول طرقًا مثل turnOnEngine o beNiceToSister:ويمكن للفئات المختلفة اعتماد هذه البروتوكولات إذا كانت مهتمة بهذه الوظيفة.

إدارة الذاكرة: الاحتفاظ والإفراج والإصدار المسبق

في لغة Objective-C، لطالما شكلت إدارة الذاكرة أحد أكبر التحديات التي تواجه المبرمجين. قبل ظهور تقنية ARC ( العد المرجعي التلقائي )، كان من الضروري التحكم يدويًا في الاحتفاظ بكل كائن وتحريره، مما زاد من خطر تسرب الذاكرة والأخطاء التي يصعب اكتشافها.

تتكون الدورة الأساسية من:

  • إنشاء الكائن (alloc).
  • استخدم الكائن.
  • تحرير الكائن (release o autorelease).

مع ARC، الذي تم دمجه في Xcode 4.2 و iOS 4، يقوم المترجم نفسه تلقائيًا بإدراج تعليمات الاحتفاظ والتحرير والتحرير التلقائي ، مما يبسط حياة المطور بشكل كبير ويجعل Objective-C أقرب إلى تجربة اللغات الأخرى مع جمع البيانات المهملة.

الخصائص والسمات: التحكم في الوصول والذاكرة

ال الخصائص في Objective-C يتم إعلانها بواسطة @property ويتم تعزيز إدارتها من خلال سمات متنوعة تتحكم في كيفية تخزين كل قيمة والوصول إليها. السمات الرئيسية هي:

  • تعيين: تعيين قيمة بشكل مباشر، دون الاحتفاظ بالكائن أو تحريره (يستخدم عادةً للأنواع البدائية أو المراجع الضعيفة).
  • يحتفظ: يحافظ على مرجع قوي للكائن، ويزيد العداد في كل مرة يتم تعيينه.
  • نسخة: إنشاء نسخة من الكائن المخصص، وهي مفيدة لسلاسل النصوص أو الكائنات غير القابلة للتغيير.
  • ضعيف: تم تقديمه مع ARC، ويحدد مرجعًا ضعيفًا يتم تعيينه تلقائيًا على nil عندما يتم تحرير الكائن الأصلي.
  • قوي: يضمن المرجع القوي أنه طالما كانت الخاصية موجودة، فسيكون الكائن متاحًا في الذاكرة.

تتيح هذه الحبيبات للمطورين تحسين استهلاك الموارد وتجنب أخطاء الوصول إلى الذاكرة.

مقارنة: Objective-C مقابل Swift

منذ عام 2014، تميز تطوير تطبيقات نظام أبل البيئي بتعايش لغتي Objective-C وSwift . ولكلتا اللغتين نقاط قوة وضعف، ويعتمد الاختيار بينهما بشكل كبير على نوع المشروع وخبرة فريق التطوير.

تشمل المزايا الرئيسية للغة Objective-C ما يلي:

  • التوافق المباشر مع C و C++: إنه يسمح لك بخلط الكود الإلزامي والكائني التوجه، وهو أمر يحظى بتقدير كبير في التطبيقات التي تتطلب أداءً خامًا.
  • النضج والاستقرار: إنها لغة تم اختبارها لسنوات، مع مجتمع كبير ووثائق وفيرة.
  • الديناميكية: يتيح لك نظام المراسلة والتأمل تعديل سلوك التطبيقات أثناء وقت التشغيل.

ومن جانبه، يساهم سويفت قائلاً:

  • ضمانات أمنية أكبر: بفضل كتابته الثابتة، ومعالجة الأخطاء، وإدارة الذاكرة الحديثة.
  • بناء جملة أكثر وضوحًا وإيجازًا: إنه يجعل كتابة وصيانة التعليمات البرمجية أسهل، وخاصة بالنسبة لأولئك الذين لا يأتون من عالم C.
  • الأدوات الحديثة: دعم ممتاز لمساحات الأسماء والتطوير التفاعلي باستخدام Playgrounds والأنماط الوظيفية.

بالنظر إلى المستقبل، تشير كل الدلائل إلى أن لغة Swift ستواصل اكتساب المزيد من الزخم، لكن لغة Objective-C ستظل ذات صلة في المشاريع القديمة الكبيرة وفي قابلية التشغيل البيني مع الأطر القديمة.

مزايا وعيوب Objective-C مقابل Swift

يجدر بنا مراجعة بعض النقاط الرئيسية التي قد تؤثر على اختيار لغة دون أخرى:

  • ج موضوعية:
    • يتيح لك العمل بكفاءة مع مكتبات C وC++.
    • إنه يوفر ميزات ديناميكية، مثل تبديل الطريقة، والتي تسمح لك بتعديل السلوك في وقت التشغيل.
    • متوافق مع الأطر الثنائية الموجودة ومكتبات الطرف الثالث.
    • ومع ذلك، فإنها تحتوي على مساحة اسم صغيرة، مما قد يؤدي إلى تعارضات في المشاريع الكبيرة وأخطاء يصعب تصحيحها.
    • قد يبدو بناء الجملة معقدًا وقديمًا بالنسبة للمبرمجين الجدد.
  • سويفت:
    • يؤدي الكتابة الثابتة والقواعد النحوية الحديثة إلى زيادة الأمان والإنتاجية.
    • دعم متقدم للأنماط الوظيفية وإدارة التعليمات البرمجية التفاعلية باستخدام Playgrounds.
    • التجميع أبطأ في المشاريع الكبيرة وبعض عدم الاستقرار في تنسيقات الوحدات النمطية أو التوافق مع C++.

أساسيات عملية وأمثلة على التعليمات البرمجية

للمبتدئين في لغة Objective-C، قد يكون من المفيد مراجعة بعض الأمثلة العملية لاستخدامها في مشاريع واقعية. إليك بعض الهياكل والمفاهيم الرئيسية:

  كيفية استخدام Switch في Python: دليل شامل مع أمثلة وبدائل

إعلان الفئات والطرق

// 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 لا يزال ركيزة أساسية لأي مطوّر يرغب في التنقل بسهولة في بيئة Apple ومواجهة تحديات البرمجة الحديثة وصيانة المشاريع الضخمة. سواءً لأسباب تتعلق بالتوافق، أو البنى القديمة، أو لمجرد الفضول التقني، فإن تعلّم Objective-C يفتح آفاقًا واسعة على تاريخ وحاضر الحوسبة الاستهلاكية.

الميراث في OOP
مقالة ذات صلة:
لغات البرمجة الأكثر استخداما في عام 2024