Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

استكشاف المنصة الأساسية

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Learn iOS SDK Development From Scratch.
Exploring the iOS SDK
First Steps with UIKit

Arabic (العربية/عربي) translation by Ziad Mousa (you can also view the original English article)

المنصة الأساسية هي الشيء الدائم في صندوق أدوات مطور نظام iOS. فهو يوفر المستوى الأساسي ل NSObject وعدد كبير من اللبنات الأساسية لتطوير iOS ، من الطبقات للأرقام والسلاسل ، إلى المصفوفات والقواميس. المنصة الأساسية قد تبدو مملة قليلاً في البداية و لكن لها فاعلية أهمية كبيرة لا غنى عنها خلال تطوير تطبيقات iOS.


كلمة حول المؤسسة الأساسية

في المادة السابقة، لقد ذكرت "المؤسسة الأساسية" بإيجاز وعلاقته بالمؤسسة. على الرغم من أننا لن نستخدم إطار المؤسسة الأساسية بشكل صريح في بقية هذه السلسلة، أنها لفكرة جيدة أن تكون على دراية بها، وأن تعرف كيف يختلف عن المنصة الأساسية، التي سوف تستخدم على نطاق واسع.

في حين يتم تنفيذ المنصة الأساسية في Objective-C، تعتمد منصة "المؤسسة الأساسية" على لغة C. وعلى الرغم من هذا الاختلاف، تقوم منصة المؤسسة الأساسية بتنفيذ أهداف محدود. يسمح object model هذا بتعريف مجموعة من الأنواع الغامضة التي يشار إليها غالبًا بإسم objects – و هي ليست بالمعنى الدقيق للكلمة ، لا نقصد بها "أشياء".

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

كما ذكرت سابقًا ، يعمل التجسير و الربط المجاني على سد الفجوة بين كلا المنصتين من خلال تمكين استبدال Cocoa objects ب Core Foundation objects في معاملات الوظائف والعكس.

من المهم ملاحظة أن (Automatic Reference Counting (ARC لا يدير ال "objects" للمنصة الأساسية، مما يعني أنه ان كنت مسؤولاً عن إدارة التخزين عند التعامل مع "Core Foundation "objects للمنصة الرئيسية. وهناك مقالة رائعة لكاتبها مايك آش حول "ARC" وكيفية استخدامه مع المنصة الرئيسية و التجسير و الربط المجاني .

تفضل بزيارة Mac Developer Library "مكتبة مطور نظام ماك" للحصول على قائمة كاملة من أنواع غامضة المدرجة في إطار "المنصة الرئيسية".


الممارسة، الممارسة، الممارسة

تعلم مهارة جديدة من الأفضل القيام به من خلال الممارسة لهذا قم بإنشاء مشروع جديد في Xcode وحدد قالب المشروع Command Line Tool "أداة سطر الأوامر" كما فعلنا سابقا في هذه السلسلة. يمكن العثور على قالب Command Line Tool في فئة Application في قسم OS X. انقر فوق Next للمتابعة.

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

اختبار محرك الأقراص

ستكون حديثنا في ما تبقى من هذه المقالة عن main.m ونافذة وحدة التحكم Xcode. قم بفتح main.m عن طريق تحديده في Project Navigator "متصفح المشروع" في الشريط الجانبي الأيسر، وتأكد من أن نافذة وحدة التحكم ظاهرة بواسطة النقر فوق الزر الأوسط من View control في شريط أدوات ال Xcode.

انقر فوق الزر Run "تشغيل" في أعلى اليسار لبناء وتشغيل النظام الحالي. إذا ما سار كل شيء على ما يرام، يجب أن تظهر لك Hello, World! "مرحبا، أيها العالم!" تظهر في نافذة وحدة التحكم في الجزء السفلي.


المنصة الأساسية

المنصة الأساسية تتعدي أن تكون مجرد مجموعة من الغرف للعمل مع الأرقام، و السلاسل، ومجموعات (المصفوفات والقواميس و الحزم). كما أنه يعرف العشرات من البروتوكولات ووظائفها، وأنواع البيانات والثوابت.

في بقية هذه المقالة، سوف تركز أساسا على الغرف التي ستستخدمها في أغلب الأحيان عند تطوير تطبيقات iOS. ومع ذلك، سوف أتحدث بإيجاز أيضا حوالي ثلاثة بروتوكولات رئيسية حددتها المنصة الأساسية،NSObject ، NSCoding ، و NSCopying.

Header Files

As you already know, the header file of a class defines its interface. Does that mean that you have to import the header file of each Foundation class that you plan to use? The answer is yes and no.

من الضروري حقا استيراد header file للفئة قبل ان تتمكن من استخدامه. يمكنك القيام بذلك عن طريق أضافه عبارة استيراد كما راينا في وقت سابق من هذه السلسلة. ومع ذلك، المنصة الأساسية توفر طريقة ملائمة لتيسير هذه العملية. الملف الوحيد الذي تحتاج إلى استيراده هو Foundation.h كما هو موضح في التعليمات البرمجية المتكررة.

خلف الكواليس، المنصة الأساسية تستورد جميع ملفات الرأس ضرورية لإعطاء لك الوصول إلى كل فئة وبروتوكول و دالة، ونوع البيانات وثابت في المنصة الأساسية.

استيراد

عندما تقوم بإنشاء مشروع جديد في Xcode وقمت بتعيين نوع المشروع إلى مؤسسة، كسكودي، سوف:

  • ربط المشروع ضد إطار المؤسسة
  • إضافة بيان الاستيراد أعلاه إلى main.m
  • إضافة بيان الاستيراد أعلاه إلى ملف رأس المترجمة مسبقاً للمشروع (*.pch)

فتح main.m التحقق من ذلك وقم بتوسيع المجلد الأطر في "متصفح المشروع" بواسطة النقر فوق المثلث الصغير على اليسار. أنا ستعود ملف الرأس المترجمة مسبقاً والغرض منه عندما نلقي نظرة في إطار UIKit.

بروتوكولات

لغات عدة، مثل بيرل، بايثون، و c + +، تقديم الدعم لوراثة متعددة، مما يعني أنه يمكن أن تنزل فئة – تكون فئة فرعية من – أكثر من فئة واحدة.

على الرغم من أن الهدف جيم لا توفر الدعم لوراثة متعددة، أنها تدعم وراثة متعددة عن طريق مواصفات في شكل بروتوكولات. ماذا يعني هذا؟ بدلاً من يرث من فئة، يعرف بروتوكول قائمة الأساليب التي تقوم بتنفيذ فصول في حالة تطابقها مع البروتوكول.

يمكن أن تتطلب بروتوكول وأساليب اختيارية. إذا كانت فئة عدم تنفيذ كافة الأساليب المطلوبة لبروتوكول، سوف يلقي المحول البرمجي خطأ.

وتتعدد فوائد البروتوكولات. عندما تتبنى فئة أو يتوافق مع بروتوكول، الفئة المتوقع لتطبيق الأساليب (مطلوب) أعلنت في البروتوكول.

بروتوكولات الهدف جيم مشابهة جداً للواجهات في جاوة. وهذا يعني أن بروتوكول يمكن استخدامها لتعريف واجهة لكائن دون الكشف عن فئة الكائن.

وراثة متعددة فوائدها، لكن بالتأكيد لها سلبيات لها. استفادة البروتوكولات أن فئات لا علاقة لها لا تزال مشاركة سلوك مشابهة من خلال استخدام بروتوكولات.

NSObject

بالإضافة إلى الفئة الجذر NSObject، يحدد إطار المؤسسة أيضا بروتوكول NSObject. كائنات مطابقة ل NSObject البروتوكول يمكن أن يكون ردا على سؤال حول هذه الفئة والفئة الفائقة، يمكن مقارنة مع كائنات أخرى، والاستجابة للنفس كما رأينا في المقال حول الهدف جيم هذا فقط مجموعة فرعية صغيرة من السلوك إضافة إلى كائنات مطابقة للبروتوكول NSObject.

نسكودينج

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

NSCopying

يعلن البروتوكول NSCopying بأسلوب واحد فقط، كوبيويثزوني:. إذا كانت فئة دعم نسخ الكائنات، التي يحتاجها ليتوافق مع البروتوكول NSCopying. نسخ كائن يتم عن طريق إرساله رسالة من نسخ أو كوبيويثزوني:.


NSObject

الفئة NSObject هي الفئة الجذر للغالبية العظمى من التسلسلات الهرمية الفئة الهدف جيم. هل تذكر لنا إنشاء مثيل مثيل من فئة الكتاب في وقت سابق من هذه السلسلة؟ أرسلنا فئة الكتاب رسالة للتخصيص وأرسلنا الكائن الناتج رسالة init. كل الأساليب التي تم تعريفها في الفئة NSObject.

يرث من فئة جذر NSObject، الكائنات تعرف كيف تتصرف ككائنات الهدف جيم، وكيفية التفاعل مع وقت التشغيل الهدف جيم. لا ينبغي أن يكون مفاجأة أن NSObject يتوافق مع البروتوكول NSObject التي شهدناها في وقت سابق.

إزالة البيان نسلوج في main.m، وقم بلصق التعليمات البرمجية المتكررة التالية في مكانها.

نبدأ بإنشاء مثيل من NSObject وتخزين مرجع لها في المتغير ميفيرستوبجيكت. في السطر الثاني، يمكننا تسجيل اسم فئة كائن جديد إلى وحدة التحكم. أسلوب الفئة، إرجاع مثيل نسترينج، كائن string، الذي هو السبب في أننا استخدام % @ محدد التنسيق في بيان NSLog.

المقبل، فإننا نطلب ميفيرستوبجيكت للفئة الفائقة وانتهاء بالتحقق من أن ميفيرستوبجيكت يتوافق مع البروتوكول NSObject. هل أنت الخلط من جانب @protocol(NSObject)؟ وهذا ليس أكثر من إشارة إلى البروتوكول NSObject.

انقر فوق تشغيل ثم افحص الإخراج في إطار وحدة التحكم. هل فوجئت بالإخراج؟ نظراً لأن NSObject فئة جذر، أنها لا تملك فائقة.


نسنومبير

الفئة نسنومبير هي فئة الأداة المساعدة التي تدير أي نوع من أنواع البيانات الرقمية الأساسية. هو فئة فرعية من فئة نسفالوي، والذي يوفر كائن مجمع موجها للأنواع العددية، فضلا عن المؤشرات وهياكل ومعرّفات الكائنات. الفئة نسنومبير تعرف أساليب لاسترداد القيمة التي تخزنها، لمقارنة القيم، وأيضا لاسترداد تمثيل سلسلة القيمة المخزنة.

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

اسمحوا لي أن أوضح هذا بمثال. إضافة التعليمات البرمجية المتكررة التالية إلى main.m.

نبدأ بإنشاء مثيل جديد من نسنومبير بتمرير قيمة مزدوجة إلى نومبيرويثدوبلي:. المقبل، ونحن استرداد القيمة المخزنة باستخدام ثلاثة أساليب مختلفة في نسنومبير. النتائج لا تعكس القيمة المخزنة في مينومبير لأسباب واضحة.

والدرس بسيط، تكون متسقة عند استخدام نسنومبير التي تتبع من النوع الذي يتم تخزينها في مثيل نسنومبير.


نسترينج

إدارة مثيلات الفئة NSString صفيف أحرف يونيكر تشكيل سلسلة من النص. الفرق خفية ولكنها هامة مع سلسلة ج عادية، التي تدير أحرف شار، أن حرف يونيكر حرف متعددة البايت.

كما يوحي اسمها، حرف يونيكر هو مثالي للتعامل مع أحرف Unicode. بسبب هذا التنفيذ، توفر الفئة NSString خارج من صندوق الدعم للتدويل.

أريد أن أؤكد على أن يديرها مثيل NSString السلسلة ثابتة. وهذا يعني أنه حالما يتم إنشاء السلسلة، فإنه لا يمكن تعديلها. قد يتم الخلط بين المطورين قادمة من لغات أخرى مثل بي إتش بي، روبي، أو جافا سكريبت، هذا السلوك.

كما يحدد الإطار الأساس فئة فرعية قابلة للتغيير من نسترينج، نسموتابليسترينج، التي يمكن تعديلها بعد أن تم إنشائه.

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

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

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

دعنا نستكشف نسترينج وفي فئة فرعية قابلة للتغيير، نسموتابليسترينج، عن طريق إضافة أجزاء التعليمات البرمجية المتكررة التالية إلى main.m.

نبدأ بإنشاء كائن سلسلة باستخدام سلسلة حرفية. في السطر الثاني، نقوم بإنشاء سلسلة ثانية باستخدام واحدة من المهيآت المتخصصة التي توفر نسترينج. ثم يتم إنشاء سلسلة قابلة للتغيير عن طريق تمرير السلسلة الأولى كوسيطة. لتوضيح أنه يمكن تعديل سلاسل قابلة للتغيير بعد إنشاء, string2 إلحاقها بسلسلة قابلة للتغيير وتسجيل لإطار وحدة التحكم.


نصري ونسيت

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

من المهم أن نفهم أن مثيلات نصري ونسيت نسديكتيوناري يمكن فقط تخزين الكائنات. وهذا يعني أنه من غير الممكن لتخزين أنواع مفردة أو المؤشرات أو الهياكل في أي من هذه الفئات مجموعة – أو على أقسام فرعية – المحول البرمجي سيتم طرح خطأ إذا قمت بذلك. الحل أن التفاف الأنواع العددية، مؤشرات والهياكل في مثيل من نسفالوي أو نسنومبير كما رأينا سابقا في هذه المقالة.

إضافة التعليمات البرمجية المتكررة التالية إلى main.m لاستكشاف نصري ونظيرتها قابلة للتغيير، نسموتابليراي.

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

لأن نسموتابليراي يرث من نصري، تتصرف في الكثير بنفس الطريقة كنصري. والفرق الرئيسي هو أن الكائنات يمكن إضافتها وإزالتها من الصفيف بعد تم إنشائه.

وقبل الانتقال، أود أن أقول بضع كلمات عن نسيت. هذه الفئة مماثلة لنصري، لكن الاختلافات الرئيسية هي أن المجموعة من الكائنات التي تدير مجموعة غير مرتبة ولا يسمح بالتكرارات.

ميزة نسيت أن الاستعلام عن الكائنات الخاصة بها أسرع إذا كنت تحتاج فقط إلى معرفة إذا كان كائن موجود في المجموعة. كما يحدد إطار مؤسسة نسورديريدسيت. مثيلات هذه الفئة فوائد نسيت، ولكن أيضا الاحتفاظ بتعقب من الموقف لكل كائن.


نسديكتيوناري

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

كما هو الحال في التجزئات روبي، لا تحتاج إلى مفتاح الإدخال لتكون كائن string في حد ذاتها. فإنه يمكن أن يكون أي نوع من الكائن الذي يتوافق مع البروتوكول NSCopying طالما المفتاح فريد في القاموس. في معظم الحالات، على الرغم من أنها أوصت باستخدام سلسلة الكائنات كمفاتيح.

لا يمكن تخزين القواميس مثل صفائف، قيمة فارغة. إذا كنت تريد أن تمثل قيمة فارغة، ثم يمكنك استخدام نسنول. تعرف الفئة نسنول كائن مفرد الذي يستخدم رمزاً للقيم الفارغة في صفائف، القواميس، ومجموعات.

نمط المفرد نمط هام في العديد من لغات البرمجة. أنه يحد من إنشاء مثيل من فئة لكائن واحد. سيتم التعامل مع كائنات فردية غالباً عند تطوير تطبيقات iOS.

ويحدد إطار مؤسسة مثل نصري، فئة فرعية قابلة للتغيير من نسديكتيوناري، نسموتابليديكتيوناري. وهناك طرق مختلفة لإنشاء مثيل لقاموس. إلقاء نظرة على التعليمات البرمجية المتكررة.

ونحن نعلن أولاً كائنين سلسلة منفصلة تحتوي على نفس السلسلة. في السطر الثالث، ونحن إنشاء مثيل قاموس بالدعوة dictionaryWithObject:forKey: الأسلوب في الفئة نسديكتيوناري.

المقبل، ونسأل القاموس للكائن المرتبط مع محتويات keyB وتسجيل ذلك في وحدة التحكم.

من المهم أن تولي اهتماما للتفاصيل. حتى ولو استخدمنا كيا كمفتاح لزوج المفتاح القيمة و keyB كالمفتاح لجلب القيمة أو كائن لزوج المفتاح القيمة، أعطانا القاموس الكائن الصحيح. الفئة نسديكتيوناري ذكية بما يكفي لتعرف أننا نريد الكائن المرتبطة بسلسلة myKey. ماذا يعني هذا؟ على الرغم من أن الكائنات كيا و keyB كائنات مختلفة، السلسلة التي تحتوي عليها هو نفسه، وهذا بالتحديد ما يستخدم للإشارة الكائن الفئة نسديكتيوناري.

جزء التعليمات البرمجية التالي يوضح أن قاموس يمكن أن تحتوي على قاموس آخر — أو صفيف — وهو يبين أيضا كيف يمكن للعمل مع القواميس قابلة للتغيير.


ج-هدف القيم الحرفية

في وقت سابق من هذه المادة، عرضت لك الهدف جيم سلسلة حرفية، مثل @"هذا سلسلة حرفية.". أنها تأخذ شكل سلسلة ج حرفية مسبوقة مع علامة @. كما تعلمون الآن، علامة @ يشير إلى أننا ندخل الأراضي الهدف جيم.

قيمة حرفية هدف جيم ليس أكثر من كتلة من التعليمات البرمجية التي تشير كائن هدف جيم. مع الإفراج عن Xcode 4.5، يمكنك الآن أيضا استخدام القيم الحرفية للهدف جيم نسنومبير ونصري نسديكتيوناري. إلقاء نظرة على أجزاء التعليمات البرمجية المتكررة التالية لمعرفة كيف يعمل هذا.

ليس فقط الهدف جيم القيم الحرفية باردة ومثيرة، كما أنها تجعل التعليمات البرمجية أكثر قابلية للقراءة. كتب مارك هاموندس برنامج تعليمي حول الهدف جيم القيم الحرفية. بعد "قراءة علامة" لنظره أكثر اكتمالا من القيم الحرفية للهدف جيم.


تسجيل الدخول مع نسلوج

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

تفضل بزيارة "مكتبة ماك المطور" للحصول على قائمة كاملة من محددات التنسيق التي يمكن استخدامها.


الاستنتاج

على الرغم من أننا قد غطت الكثير من الأرض في هذه المقالة، نحن لقد بالكاد خدش سطح إطار مؤسسة ما لهذا العرض.

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

في المادة التالية، وسوف نستكشف الإطار UIKit وسيبحث وعموميات التطبيق دائرة الرقابة الداخلية.

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.