الكمبيوتر الكفي

الكمبيوتر الكفي (http://www.ce4arab.com/vb7/index.php)
-   ملتقى المطورين لنظام iOS (http://www.ce4arab.com/vb7/forumdisplay.php?f=125)
-   -   شرح إنشاء برنامج للأيفون - الدرس الثاني ( الذاكرة والتحكم ) (http://www.ce4arab.com/vb7/showthread.php?t=376754)

Cnergey 14-11-2011 11:46 PM

شرح إنشاء برنامج للأيفون - الدرس الثاني ( الذاكرة والتحكم )
 
[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]

boing747 15-11-2011 03:09 AM

يسعدنى ان اكون اول شخص يرد على هذا الموضوع الروعه بارك الله فيك وبانتظار باقى الشرح

Cnergey 15-11-2011 07:31 AM

[quote=boing747;3009393]يسعدنى ان اكون اول شخص يرد على هذا الموضوع الروعه بارك الله فيك وبانتظار باقى الشرح[/quote]


اشكرك على كلماتك الجميلة :thumbup:

بغدادي 15-11-2011 09:34 AM

مشكور على المجهود وبارك الله فيك

Swa7L11 15-11-2011 02:32 PM

مشكور على المجهود الطيب

Rafael Nadal 16-11-2011 12:14 AM

مشكور اخي وبارك الله بيك على هذا المجهود الرائع

qwerrewq 16-11-2011 02:34 AM

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

:):)

mzaki 20-11-2011 11:52 AM

بارك الله فيكم.

Cnergey 21-11-2011 05:02 AM

[quote=بغدادي;3009852]مشكور على المجهود وبارك الله فيك[/quote]

الشكر لله اخي العزيز وفيك بارك الله :)

[quote=Swa7L11;3010497]مشكور على المجهود الطيب[/quote]

الشكر لله اخي الحبيب :)

[quote=Rafael Nadal;3012012]مشكور اخي وبارك الله بيك على هذا المجهود الرائع
[/quote]

الشكر لله اخي الحبيب وبالتوفيق :)

[quote=qwerrewq;3012219]الله يجزيك الخير ... والله يقويك لانه اصعب شي انك تشرح كيفية البرمجة لانك بدك تختار اساليب وطرق واضحة للكل وما شاء الله عليك متوفر فيك كلشي

:):)[/quote]

بالفعل المشكلة تكمن في كيفية التبسيط لإيصال المعلومة :confused:

وسلمت يداك على ماكتبت :)

[quote=mzaki;3025215]بارك الله فيكم.[/quote]

وفيك بارك الله اخي العزيز

ابوعقاب 21-11-2011 06:40 AM

السلام عليكم

مشكووووووور ويعطيك العااافيه علي الشرح المتمييز و الممتااز وتستاهل الشكر

_noki_ 22-11-2011 05:22 AM

الى الامام اخي الكريم
بكل التوفيق ان شاء الله

ahmad mahrous 05-12-2011 12:32 PM

الله يوفقك في انتظار بقية الدروس على احر من الجمر وشكرا جزيلاا

broadway 11-12-2011 09:11 AM

بارك الله فيك وجزاك خيرا
مشكور

budawood 12-12-2011 05:58 PM

جزاك الله خيرا
على المعلومات القيمة ...

almanet 13-04-2012 06:55 PM

بارك الله فيك وجزاك خيرا
مشكور

samehgb 16-04-2012 06:50 PM

الله يقويك لانه اصعب شي انك تشرح كيفية البرمجة لانك بدك تختار اساليب وطرق

بومنال 20-04-2012 04:04 AM

يا سلام عليك ,,, الله يعطيك العافية متاااااابع

مشعــــل 22-04-2012 06:01 PM

يعطيك العافيه

MBG1987 02-05-2012 03:08 PM

جزاك الله خيرا

chakrah 29-05-2012 01:14 AM

mashkoooor

sanad10r 12-06-2012 09:20 PM

الف شكر ليك

alsaed32 13-06-2012 01:57 AM

thaaaaaaaaaaaaaaaaanks

تايه غريب 09-07-2012 11:00 AM

جزاك الله خيرا
على المعلومات القيمة

almutairi_q8 18-08-2012 12:03 AM

مشكور على المجهود وبارك الله فيك


جميع الأوقات بتوقيت GMT +3. الساعة الآن 05:41 PM.

Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.