الأربعاء، 24 نوفمبر 2010

عالم آبل: سلسلة دروس برمجة تطبيقات الآيفون (4)

عالم آبل: سلسلة دروس برمجة تطبيقات الآيفون (4)

Link to عالم آبل

سلسلة دروس برمجة تطبيقات الآيفون (4)

Posted: 23 Nov 2010 11:00 PM PST

هذا هو الدرس الرابع من ضمن السلسلة ، وإن شاء الله تكون الدروس السابقة واضحة ، المواضيع التي سوف ندرسها اليوم هي:

  • إنشاء تطبيق
  • تصميم " النموذج , العرض , التحكم  (Model, View, Controller) "
  • بناء الواجهة وملف الـ Nib
  • الضوابط والفعل الهدف (Controls and Target-Action)

Line_thumb1

  • تحليل التطبيق (Anatomy of an application) :

يتكون أي تطبيق من عدة ملفات:

    1. - الكود المترجم (Compiled Code) ويتكون من الكود الرئيسي الذي سوف تكتبه و كذلك frameworks.
    2. ملفات Nib وهي التي تحتوي على عناصر UI وعلى Objects أخرى أيضا تحتوي على تفصيلات عن علاقات الـ object.
    3. المصادر (resources) من صور وأصوات وغيرها .
    4. ملف info.plist (application configuration) .
    • حياة التطبيق:

    • UIkit Framework :

الـ UIKit  يقدم العناصر الأساسية للواجهة (interface) ، ويجب عند استخدام هذا الـ framework فهمه بشكل كافي بحيث عند استخدام أكواد مختلفة معه ألا يكون هناك أي تعارض بينه وبينها.

يقوم هذا الـ framework بتشغيل البرنامج أو التطبيق ولكل تطبيق أو برنامج له عنصر واحد من UIapplication :

  1. يقوم بتنظيم دورة حياة التطبيق.
  2. يرسل الأحداث (events).
  3. نادراً مايستخدم الـ subclassed وإنما يستخدم عوضاً عن ذلك الـ delegation.

    • Delegation :

Delegation هو عندما object يخبر object آخر عن حدث معين  أو بمعنى آخر object  ينفذ مهمة لـ object  آخر يسمى الـ delegate object بالـ object المساعد. يستفاد من الـ delegation بأنه عندما يكون لدي عدة objects ولهم نفس behavior أو methods فبدل استخدام الـ inheritance  سأنشيء object واسمح  للبقية بالإستفادة منه. مثال على ذلك :

كما نرى في الصورة هنا لدي 2 objects :

  1. Window object
  2. Our object

كما نلاحظ أن للـ window object دالة إجبارية (mandatory method) ودالتين إختياريتين (optional methods). عندما يريد our object أن يكون delegate من الـ window object فهنا مايهمنا في هذه الحالة بالنسبة لـ Our object هو الدالة الإجبارية فلابد من تنفيذها. فعندما ينادي window object الدالة windowShouldClose فعلى الـ our object اتخاذ قرار والرد إما بإيجاب أو نفي وهنا رد بالإيجاب بـ (yes).

للإستزادة في الشرح زيارة الرابط التالي:

http://mistytreks.com/?p=378

وهذا رابط آخر يوضح المبدأ كما لو استخدمناه في لغات ثانية سواء java  أو C++ :

http://en.wikipedia.org/wiki/Delegation_pattern

    • ملف info.plist :

هو في الغالب يكون عبارة عن ملف XML ويقوم هذا الملف بوصف الـ application من عدة نواحي:

  1. شكل الأيقونات (icon appearance)
  2. طراز status bar على هو على الشكل التلقائي أو أسود أو يكون مخفي
  3. توجهات التطبيق
  4. استخدام الـ wifi
  5. متطلبات النظام (system requirements)

يمكن التعديل على هذا الملف من خلال فتح ملف XML مباشرة أو من قائمة:

Project->edit active target "foo" menu item -> properties tab

    • Model, View, Controller (MVC) :

هو أسلوب أو نموذج تصميمي أعتمد في عدة لغات وفي لغة الـ cocoa أيضاً  :

كل من model, view, controller ملفات مفصولة فالـ view هو مانراه على الشاشة والـ model هو مخزن للمعلومات والـ controller هو الذي يقوم بالربط مابين الـ view والـ model.

فالـ model يقوم بإدراة بيانات التطبيق وحالته وعند تغير طريقة العرض ليس بالشرط أن يتغير الـ Model بل يبقى ثابتا اذا كان لنفس البرنامج.

الـ view  يقوم بعرض البيانات الموجودة في model بواجهة مناسبة للمستخدم ويسمح للمستخدم بالتعديل على البيانات لكن لا يتحفظ فيها.

الـ controller هو الواسطة مابين الـ view والـ model يقوم بتجديد الـ view عندما تتغير الـ data بالـ Model والعكس صحيح عندما يقوم المستخدم بتعديل بيانات على view فإنها تتغير في model عن طريق الـ controller .

    • بناء الواجهة (interface builder) والـ Nibs  :

الـ Interface builder   هو الواجهة المرئية التي يمكن من خلالها بناء الـ Interface وملفات الـ Nib هي من تقوم بعرض هذه الواجهة.

هذه هي أيقونة ملف الـ Nib ونلاحظ هنا سميت بـ Xib لإرتباطها بملف XML

ملفات الـ Nib هي من تقوم بتصميم الـ V في MVC فهي من تقوم بوضع عناصر الواجهة وأيضا يمكن إضافة controller objects لها كما فعلنا في الدرس الأول عندما أضفنا controller object والربط مابينه وبين عناصر الـ UI كما فعلنا بالوصل مابين العنصر والـ controller object بالسهم.

في لحظة تحميل ملف الـ Nib يتم إستعادة جميع الـ Objects من الأرشيف وجميع القيم يتم إستعادتها أيضاً. يتم التأكد من أن جميع الـ outlets  والـ actions تم الربط بينها وبين العناصر.

بعد تحميل ملف الـ Nib قد يكون هناك تنفيذ لأمور أخرى منطقية كإظهار الحالة المبدئية وغيرها وأيضا للتأكد من أن جميع الأشياء تم إستعادتها من ملفات الـ Nib للواجهة وأن جميع الإتصالات قد عملت يجب مناداة الدالة –awakeFromNib

-(void)awakeFromNib {

//do customization أو التخصيص

}

    • الضوابط والفعل الهدف (Controls and Target-Action) :

هذا المفهموم استخدمناه في الدرس الأول وهو اللذي أعلمنا بوجود تغير في قيمة الـ slider عندما كنا نحرك فيه. فالـ control يقوم بالإستجابة لعدة أحداث منها:

  1. حدث اللمس سواء اللمس لأعلى أو أسفل أو عند السحب
  2. عند تغيير القيمة
  3. عند تعديل الحدث سواء بداية أو نهاية أو تغيير.

وعند حدوث حدث event فسيكون هناك ردة فعل لهذا الـ event بإستدعاء action  للـ Object الهدف مثال ذلك:

كما نلاحظ أن هناك زر يقوم بعمل Decrease فالهدف هنا أو ال target هو الـ Object الذي أمامي أن أعمل له نقصان والنقص هنا هو الـ action الحدث اللذي حصل هو أن المستخدم سوف يضغط على الزر ونسمي ذلك بـ TouchUpInside. فهنا بضغط الزر سنذهب إلى الهدف ونعمل له نقصان بقيمة معينه .

لدينا عدة أنواع للـ Action:

- إما أن تكون بسيطة فقط أنادي الـ Action  من دون إرسال أي شيء كما في المثال:

-(void)increase {

هنا الـ increase هو الـ action ولم نرسل معه شيء //

}

- أن أرسل مع الـ action أي object أو شيء آخر ويسمى هذا الـ object أو المرسل مع الـ action بـ argument وهذا مثال:

- (void)adjustNumberOfSides:(id)sender

{

هنا أرسلت الـ sender object وذلك حتى أستفيد من معلومات معينة في هذا الـ Object //

}

- قد أرسل مع الـ action اثنين من الـ arguments الـ object والثاني  الـ event  مثال ذلك:

-(void)adjustNumberOfSides:(id)sender withEvent:(UIEvent *)event{

هنا أرسلت الـ sender object مع الـ UIEvent event //

}

كما قلنا هنا أن لدينا ثلاثة أشياء action ,target, event قد تكون هذه الأمور متعددة فيمكن أن يكون لدي event ومن هذا الـ event يكون هناك عدة actions لعدة targets وقد يكون لدي events متعددة أيضاً.

دمتم بود :)

مواضيع مشابهة:


نظام iOS 4.2.1 وما هو الجديد !

Posted: 23 Nov 2010 02:27 PM PST

وأخيراً تم إصدار التحديث الجديد لنظام iOS لأجهزة آبل المحمولة فالتحديث لأصحاب الآيفون و الآيبود تتش لا يعتبر الكثير أو الشيء المدهش لكن لأصحاب الآيباد فهو بالفعل مدهش خصوصاً مع دعم كامل للعربية من ناحية واجهة النظام وأيضاً لوحة المفاتيح ولا ننسى أيضاً دعم خاصية AirPlay و AirPrint للتحكم بشكل لا سلكي بالطباعة وأيضاً تشغيل الصوت وعرض الصوره في الشاشات عن بعد ،،

* قبل البداية :

عليك زيارة المقال التالي يوجد بداخل المقال شرح لطريقة التحديث وأيضاً طريقة عمل باك آب لجهازك وهو مفيد جداً لأصحاب الآيباد لقد تم شرح الخصائص الجديدة لنظام iOS 4 فهي موجودة بالكامل في الآيباد مثل الآيفون والآيبود تتش في السابق وسيكون مقال اليوم عرض ماهو الجديد في نظام 4.2.1 iOS فقط.

* اللغة العربية :

تم إضافة اللغة العربية بشكل رسمي من آبل في نظام iOS 4.2.1 وسأقوم بشرح كيفية إضافة اللغة العربية للآيباد في نظام iOS 4.2.1 :

* دعم الـ AirPlay :

الأن يمكنك تشغيل أي مقطع صوت بشكل لا سلكي أو عمل بث لمرئياتك وصورك الى شاشتك بشكل لا سلكي طبعاً سيتم عرض فيديو يغني عن الكلام والصور ،،

* دعم الـ AirPrint :

الان يمكنك طباعة ماتريد بشرط ان يكون التطبيق المستخدم يدعم الطباعة في أجهزة آبل المحمولة مثل الآيفون والآيباد والآيبود تتش بشكل لا سلكي مع هذه الميزة الجميلة من خلال ربط جهازك مع الطابعة لا سلكياً ،،

* المزيد في الداش بورد :

الأن يمكنك التحكم بمستوى الصوت والـ AirPlay وسطوع الشاشة من الداش بورد على الآيباد والآيفون والآيبود تتش ،،

* إمكانية التقييم في تطبيق الـ Youtube :

الان يمكنك مشاهدة التقييم قبل الدخول الى أي مقطع وأيضاً بعد الاطلاع على المقطع ويمكنك تقييمة ايضاً في الآيباد والآيفون والآيبود تتش ،،

* إمكانية تغيير خطوط الملاحظات :

الان يمكنك تغيير خطوط تطبيق الملاحظات في الآيباد والآيفون والآيبود تتش ،،

* إمكانية البحث عن الكلمات بمتصفح سفاري :

طبعاً هذه الميزه جميلة جداً فالبعض يفضل البحث عن الكلمات قبل القراءه فبالتالي الان يمكنك مع الآيباد والآيفون والآيبود تتش البحث عن أي كلمة في أي موقع كان ،،

* إمكانية تغيير نغمات الرسائل في الآيفون :

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

* التحكم بمستوى الرنين من خارج الإعدادات في الآيفون :

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

* إجراء إتصال FaceTime من داخل الرسائل النصية :

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

أخوكم : سعود الخميس.

مواضيع مشابهة:


صدور جلبريك iOS 4.2.1

Posted: 23 Nov 2010 07:42 AM PST

صدر من فريق DEV-TEAM الجلبريك للفريم وير الجديد 4.2.1 والمسمي Redsn0w 0.9.6b2 . هذا الجلبريك مخصص للايباد والايفون 4 والايفون 3GS وهو يعاني من نفس مشكلة الجيلبريك القديم وهي ان جهازك لن يعمل في حالة نفاذ البطارية او اعادة تشغيله وهو امر سيطرك لعمل جلبريك كلما انطفي الجهاز معك وهي عمليه متعبه

نحن ننصحك بالإنتظار وعدم تحديث جوالك الى الفريم وير الجديد اذا كان مغلق على شبكة معينة وعدم استخدام الجيلبريك حاليا.

عالم آبل لا يتحمل أي مشاكل قد تواجهك بسبب الجيلبريك.

المصدر.

مواضيع مشابهة: