البرنامج الاحترافي "iOS Developer" - أفضل ممارسة لمدة 5 أشهر لتطوير تطبيقات الهاتف المحمول باستخدام Swift 5. من المتوقع أن يتم إجراء أفضل الخريجين في مقابلات مع 12 شركة شريكة لـ OTUS ، لذلك ننشر ترجمة للمقال النهائي من سلسلة "iOS Interview Questions (Swift)" ، حيث سنبحث أكثر عشرات الأسئلة ، الإجابات التي سوف تساعدك في التوظيف.

1. ما هي الأخطاء وأين يمكن استخدامها؟
- الإغلاقات عبارة عن أجزاء تعليمات برمجية قائمة بذاتها يمكن تمريرها إلى دالة كوسيطة أو استخدامها في أحد البرامج.
- تشبه عمليات الإغلاق في Swift الكتل في C و Objective-C ومثل lambdas بلغات البرمجة الأخرى.
- هذا هو نفس الوظائف تقريبًا ، لكن لا يجب تسمية عمليات الإغلاق.
- ليست هناك حاجة إلى إعلان نوع كل معلمة ، ولكن إذا قمت بذلك ، فلن تحتاج إلى تحديد نوع قيمة الإرجاع.
اتبع الرابط لرؤية جميع خيارات بناء الجملة للإغلاق.
2. ما هي الإغلاقات / الهروب من الإغلاق؟
إغلاق غير قياسي (قياسي) @:
- عندما يتم تمرير الإغلاق في وسيطات الوظيفة ويتم استخدامه قبل تنفيذ نص الوظيفة وتعود السيطرة.
- عند اكتمال الوظيفة ، يكون الإغلاق الذي تم تمريره خارج النطاق ولم يعد موجودًا في الذاكرة.
إغلاق (الإغلاق) @:
- عند تمرير الإغلاق في وسيطات الدالة واستخدامها بعد تنفيذ نص الدالة وإرجاع التحكم.
- عند اكتمال الوظيفة ، يستمر الإغلاق المنقول في الوجود ويبقى في الذاكرة حتى يكتمل الإغلاق. الرابط
3. حدد أنواع المجموعات المتوفرة في Swift؟

- المصفوفات - تستخدم لتخزين عدة قيم من نفس النوع في نموذج مرتب.
- Set (Set) - يُستخدم لتخزين قيم مختلفة من نفس النوع في نموذج غير مُرتب.
- قواميس - تستخدم لتخزين أزواج المفاتيح ذات القيمة في نموذج غير مُرتب.
4. كيف يتم تعريف الفئة الأساسية في سويفت؟
في Swift ، تصبح الفئات التي لا ترث من الفئة الأساسية ، والفئات التي تحددها دون تحديد فئة فائقة ، فئات أساسية تلقائيًا.
5. ما هي مزيلات التطهير وكيف يتم كتابتها في سويفت؟
تم إعلان إلغاء التهيئة فورًا قبل تحرير الذاكرة التي تشغلها مثيل الفئة. deinitializer هو مكتوب مع الكلمة deinit . يتم استخدامه إذا كنت بحاجة إلى القيام بأي إجراء أو تنظيف قبل تحرير الذاكرة التي يشغلها الكائن.
على سبيل المثال ، إذا قمت بإنشاء فئة مخصصة لفتح ملف وكتابة بعض البيانات إليه ، فستحتاج إلى إغلاق الملف قبل تحرير الذاكرة التي تشغلها مثيل الفئة.
مزيل الرائحة مكتوب بدون أقواس ولا يقبل أي معلمات.
deinit { // }
6. متى يتم استخدام علامات الاستفهام المزدوجة؟
يسمى هذا المشغل عامل الربط nil . يتم استخدامه لتعيين القيمة الافتراضية إذا كان الخيار لا شيء.
let a: String? = nil let b = "nil coalescing operator" let result = a ?? b print(result) //:"nil coalescing operator"
- ؟؟ يقوم b بإلغاء الضغط الاختياري a إذا كانت تحتوي على قيمة ، أو إرجاع القيمة الافتراضية b إذا كانت القيمة nil.
- التعبير دومًا له نوع اختياري. يجب أن يتطابق التعبير b مع النوع المخزن داخل.
6. ما هو الفرق بين "؟" و "!"؟
الرمز "؟"
- عند العمل مع الخيارات ، يمكنك وضع "؟" أمام مجموعات الأوامر مثل الأساليب والخصائص والمشتركين.
- إذا كانت القيمة قبل "؟" يساوي لا شيء ، ثم كل ما يأتي بعد "؟" تجاهل ، وقيمة التعبير كله يصبح لا شيء.
- خلاف ذلك ، يتم تفكيك الخيار ، وكل ما يأتي بعد "؟" يعمل على القيمة تفكيك.
- في كلتا الحالتين ، تكون قيمة التعبير بالكامل اختيارية.
الرمز "!"
- بعد التحقق من أن الخيار الاختياري يحتوي على قيمة ، يمكنك الوصول إلى قيمته الأساسية عن طريق إضافة علامة تعجب (!) في نهاية الاسم الاختياري.
- تقول علامة التعجب: "أعرف أن هذا الخيار مهم حقًا ؛ يرجى استخدامه. "
- استخدمه فقط إذا كنت متأكدًا تمامًا من أن الخيار الذي تم فك حزمه ضمنيًا يعد أمرًا مهمًا عند وصولك إليه لأول مرة.
7. ما هو الاسم المستعار للنوع في Swift؟
يقدم تعريف الاسم المستعار للنوع اسمًا مستعارًا مسماة من نوع موجود في البرنامج. يتم تعريف تعريفات الاسم المستعار للنوع باستخدام الكلمة الأساسية typealias.
اسم typealias = النوع الموجود
typealias StudentName = String let name:StudentName = "Jack"
يمكنك استخدام typealias لمعظم الأنواع في Swift ، على سبيل المثال:
- أنواع مدمجة (مثل String و Int)
- الأنواع المخصصة (مثل الفئات والهياكل والأعداد)
- الأنواع المعقدة (مثل الإغلاقات)
8. ما الفرق بين الوظائف والأساليب في Swift؟
الطريقة هي وظيفة مرتبطة بفئة أو بنية أو تعداد. ينطبق هذا على كل من أساليب المثيل وطرق الكتابة.
وظيفة - أعلن في النطاق العالمي ولا ينتمي إلى أي نوع.
يمكن تعريف الوظائف خارج الفصول الدراسية أو داخل الفصول / الهياكل / التعدادات ، في حين يجب تحديد الطرق في الداخل وتكون جزءًا من الفصول / الهياكل / التعدادات.
9. ما هو بناء جملة المعلمات الخارجية؟
تسمح لنا المعلمة الخارجية بإعطاء أسماء لوظائف المعلمات لجعل الغرض منها أكثر قابلية للفهم.
قوة func (القاعدة a: Int ، الأس b: Int) -> Int
* من المفيد في بعض الأحيان تسمية كل معلمة عند استدعاء دالة للإشارة إلى الغرض من كل وسيطة يتم تمريرها إلى الوظيفة.
إذا كنت تريد من مستخدمي وظيفتك تقديم أسماء المعلمات عند استدعائها ، فحدد اسم المعلمة الخارجي لكل معلمة بالإضافة إلى اسم المعلمة المحلي. *
10. هل من الممكن إعادة تعريف الهياكل والتعدادات في سويفت؟
لا يمكنك إنشاء فئة فرعية أو تعداد ، ولا يمكنك تجاوزها. لأن البنية هي نوع من القيمة ، ويحتاج المترجم إلى معرفة حجمه الدقيق في وقت الترجمة ، مما يجعل التجاوز مستحيلًا.
للعثور على الأجزاء السابقة ، اتبع الروابط الجزء 1 ، الجزء 2 ، كل شيء عن عمليات الإغلاق ، كل شيء عن الخصائص
هذا كل شئ! نحن على يقين من أن الترجمات ستكون مفيدة ليس فقط لطلاب دورة iOS Developer ، ولكن أيضًا للعديد من مستخدمي Habr. نتمنى لكم التوفيق والنجاح المهني ونتطلع إلى المجموعات التالية من برامجنا عبر الإنترنت المحمية بحقوق الطبع والنشر!