Swift في Objective-C: دليل الاستيراد للمشاريع الهجينة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كيفية استيراد كود Swift إلى Objective-C: دليل خطوة بخطوة مع أمثلة واقعية

\n\n

هل سبق لك أن وجدت نفسك في موقف تحتاج فيه إلى إضافة وحدة Swift جديدة إلى مشروع Objective-C قديم؟ أو ربما يقوم فريقك بالترحيل تدريجياً من Objective-C إلى Swift، ولكنك مضطر للعمل في وضع هجين؟ إذا كان الأمر كذلك، فأنت في المكان الصحيح. سؤال «How can I import Swift code to Objective-C?» هو من أكثر الأسئلة شيوعاً على Stack Overflow (عشرات الآلاف من المشاهدات)، ولا عجب: حتى المطورون ذوو الخبرة يخلطون أحياناً في إعداد الجسر بين اللغتين.

\n\n

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

\n\n

لماذا لا يزال Swift و Objective-C يعيشان معاً؟

\n\n

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

\n\n

المشكلة الرئيسية: Swift و Objective-C عالمين مختلفين. يتم تجميع Swift إلى تنسيق ثنائي خاص به، و Objective-C إلى تنسيقه الخاص. لكي يتمكن كل منهما من «رؤية» الآخر، هناك حاجة إلى جسر خاص — bridging header لاستيراد Objective-C إلى Swift، وملف رأس تم إنشاؤه تلقائياً لاستيراد Swift إلى Objective-C.

\n\n

مخطط العمل: كيف يرى Swift Objective-C والعكس

\n\n

دعنا نوضح الاتجاه فوراً:

\n\n
    \n
  • Objective-C → Swift: نستخدم الملف المُنشأ ProductModuleName-Swift.h (حيث ProductModuleName هو اسم الوحدة الخاصة بك).
  • \n
  • Swift → Objective-C: نستخدم bridging header (ProjectName-Bridging-Header.h).
  • \n
\n\n

اليوم نحن مهتمون بالخيار الأول. ولكن لفهم الصورة الكاملة، من المفيد معرفة كليهما.

\n\n

الخطوة 1: إعداد المشروع للعمل المشترك

\n\n

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

\n\n

تحقق من إعدادات Build Settings

\n\n

افتح إعدادات الهدف (Target) الخاص بك في Xcode وابحث عن المعامل «Defines Module». يجب أن يكون مضبوطاً على Yes. إذا لم يكن موجوداً — أضفه يدوياً:

\n\n
// Build Settings → Packaging → Defines Module = YES
\n\n

ثم ابحث عن «Product Module Name» — هذا هو الاسم الذي سيتم استخدامه في ملف الرأس المُنشأ. افتراضياً، يتطابق مع اسم المشروع، ولكن يمكنك تغييره (على سبيل المثال، MyApp).

\n\n

أنشئ bridging header (إذا لم يكن موجوداً)

\n\n

عند إضافة ملف Swift لأول مرة إلى مشروع Objective-C، سيعرض Xcode إنشاء bridging header. وافق. إذا فاتتك هذه اللحظة — أنشئ الملف يدوياً: New File → Header File وسمِّه YourProjectName-Bridging-Header.h. ثم حدد المسار إليه في الإعدادات:

\n\n
// Build Settings → Swift Compiler - General → Objective-C Bridging Header\n// مثال: $(SRCROOT)/$(PROJECT_NAME)/YourProjectName-Bridging-Header.h
\n\n

الخطوة 2: كتابة كلاس Swift سيكون متاحاً من Objective-C

\n\n

ليس كل كلاس Swift سيكون «مرئياً» تلقائياً لـ Objective-C. هناك عدة متطلبات إلزامية:

\n\n