Xcode

**Xcode** היא סביבת פיתוח משולבת (IDE) של חברת אפל למערכות MacOS ו-iOS. הגרסה הראשונה של התוכנה, 1.0, הושקה בשנת 2003. הגרסה היציבה הנוכחית היא 12.1 (גרסת בטא נוכחית - 12.2)

ערכת פיתוח של אפל למכשירי האייפון, אייפוד טאצ', אייפד, אייפד מיני, מקינטוש והשעון של אפל (Apple Watch). התוכנה ניתנת להורדה בחינם מחנות האפליקציות של Apple. המערכת תומכת במגוון שפות תכנות, כאשר העיקריות שבהן הן Objective-C, C, C++, וסוויפט (Swift).

## יכולות
ערכת ה-Xcode כוללת בתוכה את הכלים הבאים:
# **Interface Builder** - מערכת ויזואלית לבניית מסכים גרפיים על ידי גרירת פקדים ואובייקטים מתפריט ואפשרות לערוך מספר פרמטרים בהם (כגון צבע רקע, תמונת רקע, טקסטים, התנהגויות שונות ועוד.). כמו כן קיימת אפשרות לחבר בין הפקדים השונים לקוד על ידי ממשק ניהול נוח.
# **סימולטור** - אפליקציות הנכתבות ב-Xcode ניתנות להרצה על גבי סימולטור המדמה באופן מדויק את מכשירי המטרה. 
# **Storyboard** - זוהי מערכת הנותנת למתכנת כלי ויזואלי לבניית מסכים לאפליקציה והגדרת הקשרים בין המסכים האלו. ה-Storyboard מורכב מרצף של מסכים שכל אחד מהם מייצג view controller ו-views. המסכים מקושרים על ידי אובייקטים הנקראים segue המייצגים את המעברים בין המסכים.
# **Instruments** - מערכת לאבחון וניתוח בעיות זיכרון, מהירות וביצועים. Instruments אוספת מידע כגון זיכרון, דיסק, שימוש במעבד ומציגה אותם בזמן אמת בצורה גרפית ונוחה להבנה ולניתוח.
# מערכת ניהול גרסאות מובנית בתוך סביבת הפיתוח ומאפשרת לצפות בשתי גרסאות אחת לצד השנייה למעקב אחר שינויים. 
# **ARC - Automatic Reference Counting** - כלי לניהול זיכרון אוטומטי שהתווסף ל-Xcode בגרסה 4.2. כלי זה מוריד מהמתכנת את האחריות לניהול הזיכרון של משתנים ודואג בעצמו לפנות זיכרון שאינו בשימוש.
# **Organizer** - כלי עזר לניהול הכולל:
## **Devices organizer** - כלי לניהול מכשירים לפיתוח, ניהול הרשאות פיתוח ובדיקה.
## **Repositories organizer** - כלי ליצירת, ניהול וצפייה ב-git או subversion. 
## **Projects organizer** - ניהול פרויקטים פתוחים של Xcode, תוצריהם ותדפיסי המסך שלהם.
## **Archives organizer** - צפייה וניהול תוצרים (builds) כולל בנייה להפצה.
## **Documentation organizer** - תיעוד של כל ה-API המסופקים על ידי אפל.

## מבנה חיצוני
ה-Xcode בנוי מחלון מרכזי לכתיבת הקוד ומספר חלוניות עזר הניתנות להצגה/הסתרה:
* **חלון מרכזי** - עורך קוד (Editor). חלון זה תמיד מופיע על המסך ומכיל בתוכו 3 אפשרויות תצוגה:
** **חלונית עריכה רגילה** - לערכית קוד באופן רגיל.
** **חלונית עריכה מפוצלת** - לעריכה/צפייה בשני קבצים בו זמנית.
** **חלונית מפוצלת להשוואת גרסאות** - נותנת את האפשרות להשוות בין קובץ בצד אחד לבין גרסה מוקדמת שלו לשם זיהוי שינויים שנוצרו.
* **חלונית ניווט** (Navigator Area) - מופיעה מצד שמאל של העורך ומכילה:
** **Project Navigator** - לניווט בתוך תיקיות וקובצי הפרויקט.
** **Symbols Navigator** - מראה רשימה של מחלקות ופרוטוקולים או את היררכיית הירושה שלהם.
** **Search Navigator** - חלונית החיפוש בפרויקט.
** **Issue Navigator** - רשימה של השגיאות, ההערות והאזהרות בפרויקט.
** **Debug Navigator** - פעיל רק בעת ריצת בדיקה (דיבאג). מציג את רשימת התהליכונים (Threads) הפעילים והפונקציות הפעילות בהם כרגע. בעת עצירה בנקודת עצירה (Breakpoint) ניתן לראות היכן נעצר הסמן ואת רשימת הפונקציות בהן היה לפני כן (Call Stack).
** **Breakpoint Navigator** - ריכוז כל ה-Breakpoints בפרויקט, בחלוקה למחלקות.
** **Log Navigator** - מציג רשימת פעולות שבוצעו בפרויקט. 
* **חלונית הכלים/עזרים** (Utility Area) - מופיעה מצד ימין של העורך. מכילה עזרה, כלי ניהול לנתונים מסוימים, פיסות קוד מוכן מראש ועצמים גרפיים מוגדרים מראש:
** **File inspector** - צפייה וניהול ערכי קבצים כמו שמות, סוגים, מיקומים וכו'. 
** **Quick Help** - תקציר על פרמטרים, מחלקות או פרוטוקולים כגון תיאור, מיקום, הגדרות, מדריכים ודוגמאות.
*בנוסף, ה-Utility Area מספקת מספר אפשרויות נוספות עבור עורכים אחרים, לדוגמה - Interface Builder מספק:
** **Identity inspector** - צפייה וניהול ערכי מטה-דאטה כגון שם המחלקה, Runtime Attributes, נתוני accessibility (יכולת תמיכה והנגשה לאנשים בעלי מוגבלויות שונות) ועוד.
** **Attributes inspector** - מאפיינים לאותו אובייקט כגון צבע, צבע רקע, סגנון עיצובי ועוד. מאפיינים אלו משתנים בהתאם לסוג האובייקט המסומן (כפתור, שדה טקסט וכדומה).
** Size inspector - מאפייני גודל ומיקום של אובייקטים, ערכי מינימום ומקסימום ואפשרויות שינוי גודלו.
** **Connections inspector** - ניהול וצפייה ביישומי וקישורי האובייקט לקוד.
***חלונית הספרייה** - מאפשרת לבחור בין:
** **File templates** - תבניות מוגדרות מראש של סוגי קבצים. 
** **Code snippets** - פיסות קוד שניתן להשתמש בהן בקוד.
** **Objects** - אובייקטים גרפיים לשימוש ב-Interface Builder. 
** **Media files** - ריכוז של כל התמונות, אייקונים וקובצי קול השייכים לפרויקט.
* **חלונית דיבאג** (Debug Area) - שליטה וניהול ריצת הפרויקט. צפייה בכל המשתנים והרגיסטרים, צפייה בפלט של הדפסות הלוגים. החלונית מספקת לחצני דיבאג סטנדרטיים (ריצה, מעבר לפקודה הבאה, כניסה לפונקציה, יציאה מפונקציה), אפשרות לדמות שירותי מיקום, ניקוי יומן ריצה ואפשרויות צפייה שונות (יומן ריצה בלבד, משתנים בלבד, חלון מפוצל).

## קישורים חיצוניים

* 
* מדריכים ותיעוד
* שימוש בכלים של Xcode

קטגוריה:סביבות פיתוח משולבות לשפת C
קטגוריה:סביבות פיתוח משולבות לשפת C++
קטגוריה:סביבות פיתוח משולבות לשפת Objective-C