شرح إنشاء برنامج للأيفون - الدرس الثاني ( الذاكرة والتحكم )
[CENTER]في هذا الموضوع سنتطرق إلى كابوس اغلب المطورين
الا وهو الذاكرة , الجزء الممل في تطوير البرامج والجزء الأهم كذلك .. تعتمد الذاكرة على نوعية الأيفون المصمم له التطبيق ( إصدار الفيرموير سيحدد ذلك ) فعلى سبيل المثال , جعل التطبيق لايعمل على إصدارات اقل من 3.2 سيمنع اجهزة 2G من إستخدامه وستتقيد بأجهزة 3G , 3Gs , 4 & 4s ولكل منهم سعه معينه من الذاكرة (الرامات) , مثال : الايفون 3Gs حجم الرامات 256 يسحب النظام الجزء الأكبر ويتبقى لك اقل من 128 MB لهذا يجب ان يُأخذ الرقم بالحسبان كي لاترفض Apple التطبيق إدراة الذاكرة ... Memory Management قم بتشغيل المشروع الذي انشأناه سابقاً او قم بإنشاء واحد جديد [url="http://www.ce4arab.com/vb7/showthread.php?t=374472"]شرح إنشاء برنامج للأيفون - الدرس الأول - الكمبيوتر الكفي[/url] والأنتقال إلى ClassTest ( قمنا بعمل Class يسمى Cnergey ) و instance يسمى P للمشروع قمنا بإنشاءه عبر [CODE]Cnergey *p = [Cnergey new];[/CODE] وهي من اسهل الطرق لإنشاء المشاريع [CODE]Cnergey*p = [[Cnergeyalloc] init];[/CODE] مع امر Alloc نعطي امر للبدأ بعمل الذاكرة والتهيئة " زيادة" إن كان ضرورياُ للمشروع وامر Init لتهيئة الذاكرة.. ولكن ماهي الحكمة من هكذا اوامر وخصوصاً التهيئة ؟ امر init ممكن التحكم فيه لإجتياز اساليب الـ init العادية إطلاق الأساليب .. [CODE][p release]; [/CODE] عندما نقول Release فنحن نطلب من الكمبيوتر تدمير المشروع , لهذا قد تظهر للكثير اخطاء او يذهب المجهود ادراج الرياح .. وقد ترى احيانا امر Dealloc في حقل تنفيذ Class وهي جزء من NSObject والبعض يحتاج لتجاوز هذه العملية .. على سبيل المثال [CODE]-(void) dealloc{ NSLog(@"Bye"); [super dealloc]; }[/CODE] إذا كنت تنوي تجاوز امر dealloc فتأكد من كتابة super dealloc في نهاية الامر في الملف ذو الإمداد .h Autorelease Pools من خلال Autorelease Pools نستطيع التعامل مع مشاريعنا المطلقة وهكذا كيف تنشأ Autorelease Pools [CODE]int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[pool alloc] init]; NSLog(@"Hello World") [pool drain]; return 0; }[/CODE] لماذا لا نرسل تطبيقاتنا دئما إلى AP ؟ لأنها تعني ان المشروع مازال قيد العمل ويحتاج للمزيد من الوقت على سبيل المثال .. لديك وظيفة كهذه في التطبيق [CODE]-(a) something { A *a [[A alloc] init]; [a release]; return a; }[/CODE] فإن قمت بإطلاقة سيحدث خلل في البرنامج Crash لأننا اطلقنا البرنامج والبرنامج سيقوم بإعادته وهكذا بداية العمل والتحضير سنقوم بإنشاء تطبيق يقرأ اسمك ويقول Hello قم بإختيار View-Based Application وامنحها اسم وليكن على سبيل المثال FirstApp من resources folder أختر FirstAppViewController.xib من Library ابحث عن حقل الكتابة " text" وقم بسحبه إلى View” window [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568171.png[/IMG] ومن ثم قم بالتوسيع [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568172.png[/IMG] ومن حقل الكتابة اذهب إلى Inspector ابحث عن Placeholder واكتب Please, type your name [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568173.png[/IMG] [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568174.png[/IMG] قم بالعوده إلى ملف FirstAppViewController.h للتعديل على الواجهه كما نريد [CODE]#import @interface FistAppViewController : UIViewController { IBOutlet UITextField * Name; IBOutlet UILabel * Output; } @property (nonatomic, retain) IBOutlet UITextField * Name; @property (nonatomic, retain) IBOutlet UILabel * Output; @end[/CODE] الأن نحن بحاجة لإضافة اسلوب وتأكد من كتابته قبل العلامة @end [CODE]-(IBAction) ProcessName;[/CODE] بعد الانتهاء , اذهب إلى ملف FirstAppViewController.m وابحث عن سطر @implementation FirstAppViewController واكتب [CODE]@synthesize Name; @synthesize Output;[/CODE] بعد ذلك نحتاج لكتابة التطبيق [CODE]-(IBAction) ProcessName { NSString * message = [[NSString alloc] initWithFormat:@"Hello, %@",Name.text]; [Output setText:message]; [message release]; }[/CODE] الأن اتممت الجزء الاكبر ولم يتبقى لك سوى الربط فيما بين التصاميم والاوامر عبر النافذة السوداء [CODE]http://i43.tinypic.com/mrpaif.png[/CODE] [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568175.png[/IMG] وبعد الانتهاء ... إضغط على Run لتشاهد ماقمت بإنجازة [IMG]http://www.ce4arab.com/vb7/images/sub/11_2011/568176.png[/IMG] يتبع .... [/CENTER] |
يسعدنى ان اكون اول شخص يرد على هذا الموضوع الروعه بارك الله فيك وبانتظار باقى الشرح
|
[quote=boing747;3009393]يسعدنى ان اكون اول شخص يرد على هذا الموضوع الروعه بارك الله فيك وبانتظار باقى الشرح[/quote]
اشكرك على كلماتك الجميلة :thumbup: |
مشكور على المجهود وبارك الله فيك
|
مشكور على المجهود الطيب
|
مشكور اخي وبارك الله بيك على هذا المجهود الرائع
|
الله يجزيك الخير ... والله يقويك لانه اصعب شي انك تشرح كيفية البرمجة لانك بدك تختار اساليب وطرق واضحة للكل وما شاء الله عليك متوفر فيك كلشي
:):) |
بارك الله فيكم.
|
[quote=بغدادي;3009852]مشكور على المجهود وبارك الله فيك[/quote]
الشكر لله اخي العزيز وفيك بارك الله :) [quote=Swa7L11;3010497]مشكور على المجهود الطيب[/quote] الشكر لله اخي الحبيب :) [quote=Rafael Nadal;3012012]مشكور اخي وبارك الله بيك على هذا المجهود الرائع [/quote] الشكر لله اخي الحبيب وبالتوفيق :) [quote=qwerrewq;3012219]الله يجزيك الخير ... والله يقويك لانه اصعب شي انك تشرح كيفية البرمجة لانك بدك تختار اساليب وطرق واضحة للكل وما شاء الله عليك متوفر فيك كلشي :):)[/quote] بالفعل المشكلة تكمن في كيفية التبسيط لإيصال المعلومة :confused: وسلمت يداك على ماكتبت :) [quote=mzaki;3025215]بارك الله فيكم.[/quote] وفيك بارك الله اخي العزيز |
السلام عليكم
مشكووووووور ويعطيك العااافيه علي الشرح المتمييز و الممتااز وتستاهل الشكر |
الى الامام اخي الكريم
بكل التوفيق ان شاء الله |
الله يوفقك في انتظار بقية الدروس على احر من الجمر وشكرا جزيلاا
|
بارك الله فيك وجزاك خيرا
مشكور |
جزاك الله خيرا
على المعلومات القيمة ... |
بارك الله فيك وجزاك خيرا
مشكور |
الله يقويك لانه اصعب شي انك تشرح كيفية البرمجة لانك بدك تختار اساليب وطرق
|
يا سلام عليك ,,, الله يعطيك العافية متاااااابع
|
يعطيك العافيه
|
جزاك الله خيرا
|
mashkoooor
|
الف شكر ليك
|
thaaaaaaaaaaaaaaaaanks
|
جزاك الله خيرا
على المعلومات القيمة |
مشكور على المجهود وبارك الله فيك
|
جميع الأوقات بتوقيت GMT +3. الساعة الآن 06:51 AM. |
Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.