שמעתם על בלוקים ב-iOS ../images/Emo35.gif
iOS 4 מציגה בין היתר תכונה חדשה שעשויה לשנות מן היסוד את הדרך בה אתם מפתחים באופן כללי. מדובר בבלוקים ! (או קוביות איך שתרצו) הבלוקים הם למעשה הרחבה לשפת C ולכך תמיכה מלאה ב Objective-C. אם אתם מכירים שפות תכנות כגון רובי, פייתון או ליספ, אז אתם וודאי יודעים את הכוח הטמון בבלוקים. במילים פשוטות, עוזר לך לתמצת גושי קוד (encapsulate) ולהשתמש בהם בצורה גנרית קלה לגמרי ככל אובייקט אחר. חברים, זה סגנון שונה של תכנות מפני שאתם יכולים בעזרתו לעשות דברים שעד עכשיו לא חשבתם שתוכלו ובטח לא בכזו קלות ובכך למעשה לנצל את ממשקי API חדשים iOS 4. בואו נראה איך עושים את זה עם שתי דוגמאות שבהם תוכל להשתמש בבלוקים ב iOS 4:
iOS 4 מציגה בין היתר תכונה חדשה שעשויה לשנות מן היסוד את הדרך בה אתם מפתחים באופן כללי. מדובר בבלוקים ! (או קוביות איך שתרצו) הבלוקים הם למעשה הרחבה לשפת C ולכך תמיכה מלאה ב Objective-C. אם אתם מכירים שפות תכנות כגון רובי, פייתון או ליספ, אז אתם וודאי יודעים את הכוח הטמון בבלוקים. במילים פשוטות, עוזר לך לתמצת גושי קוד (encapsulate) ולהשתמש בהם בצורה גנרית קלה לגמרי ככל אובייקט אחר. חברים, זה סגנון שונה של תכנות מפני שאתם יכולים בעזרתו לעשות דברים שעד עכשיו לא חשבתם שתוכלו ובטח לא בכזו קלות ובכך למעשה לנצל את ממשקי API חדשים iOS 4. בואו נראה איך עושים את זה עם שתי דוגמאות שבהם תוכל להשתמש בבלוקים ב iOS 4:
[UIView animateWithDuration:2.0 animations:^ { self.cardView.alpha = 1.0; self.cardView.frame = CGRectMake(176.0, 258.0, 72.0, 96.0); self.cardView.transform = CGAffineTransformMakeRotation(M_PI); } ];
והשניה:NSArray *cards = [NSArray arrayWithObjects"Jack", @"Queen", @"King", @"Ace", nil]; [cards enumerateObjectsUsingBlock:^ (id object, NSUInteger index, BOOL *stop) { NSLog(@"%@ card at index %d", object, index); }];
בדוגמה הראשונה: בדוגמה זו נניח שאנו יוצרים משחק קלפים ואנחנו רוצים ליצור הנפשה ע"י הזזת כרטיס מידו של ה"סוחר" למיקומו של השחקן. למזלנו, ה- UIKit יכול לעשות עבורינו את כל העבודה השחורה כשמדובר באנימציות (אפילו המורכבות שבהן). ולמרות שפונקציות האנימציה מאוד כלליות הרי שהיא בקלות יכולה להתאים עצמה ליישום הספציפי שלך. אתם כמפתחים, קובעים מה יהיה אופיין האנימציה בבלוק עם הכרזה על המאפיינים הרצויין בתוך בלוק של animateWithDuration... אתם מוזמנים לנסות ! באשר לדוגמה השניה, הייתי רוצה את התערבותכם ולשמוע מכם מה זה עושה ... ואיך אולי אתם הייתם עושים את זה אחרת .... אשמח לקבל רעיונות ליישומים נוספים של הבלוקים, אולי עם העברת פרמטרים או עם גרפיקה יותר עשירה ... ובכלל אם יש מי שיתנגד לצורת הכתיבה הזו ... אשמח לשמוע ! שיהיה בהצלחה לכולם !