خبرنامه
 
پست الکترونیکی خود را وارد نمایید
شماره خبر : 848
تاریخ انتشار :
 iOS SDK چیست؟

iOS SDK چیست؟

یک درک اولیه خوب از اجزای تشکیل دهنده IOS SDK و نحوه کار کرد و ارتباطشان با یکدیگر می تواند شما را در توسعه برنامه کاربردیتان بسیار کمک کند. نه تنها این درک اولیه به شما در انتخاب ابزارهای درست برای حل یک مسئله کمک می کند، بلکه  مطمئن خواهید شد که با این شناخت هیچ موقع بین انتخاب مجموعه ای از فریمورک های بسته توسعه نرم افزار iOS یا همان iOS SDK گرفتار نخواهید شد. ما در این مقاله تمرکز خود را روی معماری iOS گذاشته و به شما نشان خواهیم داد که برنامه های قابل تولید تحت این سیستم عامل از چه قدرتی برخوردار هستند. با ما همراه باشید.
iOS SDK چیست؟
من به شخصه مطمئن هستم که حتی یک عده معدودی از برنامه نویسان با تجربه سیستم عامل iOS که سالها بر روی تولید برنامه ها تحت این پلتفرم کار کرده اند نیز در توصیف iOS SDK تحت یک جمله  تا حدی لنگ می زنند. اگر این سری مقالات رو خوب دنبال کرده باشید شاید تا العان متوجه شده باشید که در واقع سرواژه SDK همان خلاصه شده سه کلمه Software Development Kit است. در حقیقت iOS SDK شامل یک سری از ابزارها و منابع نرم افزاری بوده که به توسعه دهندگان اپلی این اجازه را می دهد تا برنامه های خود را توسعه، نصب، اجرا و در نهایت روی یک شبیه ساز یا دستگاه های فیزیکی تست نمایند.
در اصل دو چیزی که قدرت واقعی برنامه های بومی iOS را مشخص می کند زبان شیگرای C و مجموعه‌ای از فریمورک های بومی iOS هستند. اگر این سری مقالات را دنبال کرده باشید حتماً می دانید که در مقاله پیشین زبان شیگرای C مورد بررسی قرار گرفت. حال در این مقاله به بررسی فریمورک هایی خواهیم پرداخت که قدرت بومی برنامه های iOS از جهاتی در واقع مبتنی بر آنها هستند.
این مجموعه شامل فریمورک های سطح بالا از جمله فریمورک های UIKit و Map Kit هستند. ناگفته نماند از جمله فریمورک هایی که به صورت محسوسی با سخت افزار کاربر گره خورده اند نیز می توان به فریمورک های Accelerate و Core Location اشاره کرد.
یک برنامه بومی iOS چیست؟
با توجه به توضیحات گفته شده، شما می دانید که iOS SDK چیست. اما حال باید این سوال را مطرح کرده که چه چیزهایی سبب می شود که یک برنامه به عنوان یک برنامه بومی iOS شناخته شود؟ جواب ساده و مختصری که می توان به این سوال داد این است که یک برنامه تولید شده تحت iOS در واقع برنامه ای است که روی یک دستگاه iOS اجرا می شود. به هر حال این تنها نیمی از واقعیت است. چرا که از طرفی ما با برنامه های وب که تحت مرورگری به مانند سافاری اجرا می شوند نیز سروکار داریم. اجازه دهید تا به بررسی موضوع بپردازیم. با ما همراه باشید.

یک برنامه iOS در واقع یک برنامه Cocoa بوده که تحت پلتفرم iOS توسعه داده شده است.خب حال اصلاً این برنامه Cocoa چیست؟ در اصل تعریف و توصیف یک برنامه Cocoa در چند جمله کمی سخت تر است. مثلاً بگوییم آیا این زبانی است که برنامه توسط آن نوشته شده است؟ واقعاً خیر. یا مثلاً بگوییم که آیا Cocoa در واقع ابزارهایی است که همراه با یک برنامه Cocoa ساخته شده است؟ جواب این سوال هم منفی است. حقیقت این است که شما می توانید یک برنامه Cocoa را بدون هیچ گونه کمک و استفاده از Xcode توسعه دهید.
در اصل اپل یک برنامه Cocoa را به عنوان برنامه ای تعریف می کند که از شیهای زیاد تشکیل شده و در نهایت از خصوصیات و رفتار کلاس NSObject به ارث خواهند برد. همانطور که در مقاله قبلی بدان اشاره شد NSObject یک کلاس ریشه است که تحت فریمورک Foundation اعلان شده و همچنین مبتنی بر زبان شیگرای C در زمان اجرای برنامه است.
در این مقاله ما تمرکز اصلی خود را بر روی فریمورک هایی خواهیم گذاشت که به منظور توسعه و تولید برنامه های بومی iOS مورد استفاده قرار گرفته اند. با این وجود اگر تمایل به یادگیری بیشتر زبان شیگرای C دارید می توانید به مقالات موثقی که در سایت های معتبر منتشر شده، مراجعه کنید.
نکته : دومین کلاس ریشه تحت فریم ورک Foundation، NSProxy نام دارد. که البته به ندرت پیش می آید که در پروژه هایتان مورد استفاده قرار دهید.
معماری iOS :
تفاوت دیگری که بین برنامه های مبتنی بر وب iOS که در مرورگر سافاری اجرای می شوند با برنامه های بومی وجود دارد  این است که برنامه های بومی به صورت مستقیم با سیستم عامل iOS و فریمورک های بومی سیستم iOS ارتباط برقرار می کنند. در واقع در این جا سیستم عامل نقش میانجی را بین برنامه و سخت افزار مربوطه بازی می کند. یک ویژگی کلیدی که تحت این واسطه گری وجود دارد این است که تغییرات سخت افزاری آینده خللی را در عملکرد و کنش و واکنش بین نرم افزار و سخت افزار ایجاد نمی کند.
در اصل سیستم عامل که نقش واسطه بین برنامه iOS و سخت افزار iOS را بازی می کند اطلاعات لازم در مورد قابلیت های سخت افزاری کاربر را در اختیار برنامه قرار می دهد. به عنوان مثال آیا دستگاه کاربر از دوربین برخوردار است یا مثلا این برنامه روی چه دستگاهی درحال اجراست. آیفون یا آیپد؟
به طور کلی معماری iOS را می تواند تحت 4 لایه متفاوت تقسیم بندی کرد :


Cocoa Touch
Media
Core Services
Core OS


این معماری با چنین لایه هایی سطح انتزاع را مشخص می کند. به این ترتیب که لایه های بالاتر انتزاعی تر بوده و لایه هایی که در مرتبه پایین تری قرار دارند مهم تر بوده و  بیشتر به ارتباط با  سخت افزار پلتفرم گره خورده اند. ناگفته مشخص است که سطوح بالاتر نیز برای انجام برخی عملیات خود به لایه های سطح پایین تر نیازمند هستند. به طور کلی توصیه شرکت اپل بر این است که تا جایی که امکان دارد از فریمورک های سطح بالاتر استفاده کنید. چرا که آنها اغلب انتزاع های شیگرای فریمورک های سطح پایین تر هستند. به عبارت دیگر لایه های سطح بالاتر به صورت غیر مستقیم به واسطه لایه های سطح پایین با سخت افزار ارتباط برقرار می کنند. و این به نسبت پیچیده تر بوده و به طبع میزان زمان لازم برای توسعه نرم افزار را افزایش خواهد داد. البته با این وجود در صورتی هم که فریمورک های سطح بالاتر پاسخگوی نیازهای شما نبودند هنوز هم می توانید به سراغ فریم ورک های سطح پایین تر بروید.
اگر به یاد داشته باشید گفتیم که در واقع یک فریمورک شامل یک پوشه بوده که آن پوشه نیز دربردارنده کتابخانه های پویای اشتراکی و منابع وابسته به آنها از جمله فایل های هدر، تصاویر و .. می باشد. در واقع فریمورک ها برای رابط های سیستمی مختلفی مانند بخش iOS address book، camera roll و بخشmusic library به عنوان نقاط دسترسی محسوب می شوند.
لایه Cocoa Touch :
در مقاله پیشین ما مطالبی را در مورد Cocoa Touch و ارتباط آن با زبان شیگرای C خدمت شما ارائه کردیم. حال در این مقاله قصد داریم این لایه را از نقطه نظر عملیاتی بیشتر مورد بررسی قرار دهیم. برای مثال به شما خواهیم گفت که چگونه برنامه های مختلف از لایه Cocoa Touch استفاده کرده و در آخر نقش این لایه را در معماری iOS شرح خواهیم داد.
لایه Cocoa Touch در بین کلیه لایه های موجود تحت معماری iOS در بالاترین سطح قرار دارد. این لایه شامل چند فریمورک کلیدی بوده که برنامه های بومی سیستم عامل iOS برای پیشبرد اهداف خود به آنها تکیه می کنند. ناگفته نماند که در بین فریمورک های موجود در این لایه، UIKit، برجسته ترین و کلیدی ترین فریم ورک موجود است.
در اصل لایه Cocoa Touch ساختار پایه برنامه تحت توسعه را تعریف و معین کرده و امکان استفاده از  فناوری های حیاتی‌و واجبی مانند چندوظیفه ای و ورودی های لمسی را در اختیار برنامه نویس قرار می دهد.
همانطور که پیشتر گفته شد برنامه های تحت توسعه iOS به طور باورنکردنی‌ای مبتنی به فریمورک UIKit هستند. تا این حد که اگر برنامه های بومی iOS به فریمورک های UIKit و Foundation متصل نشده باشند قادر به پیشبرد کار خود نیستند.
فریمورک UIKit را می تواند به نوعی قلب پلتفرم iOS دانست. در حال حاضر معادل این فریمورک نیز برای پلتفرم OS X، فریمورکی به نام Application Kit یا AppKit بوده که از نظر ارزشی نیز، این دو فریمورک در یک جایگاه یکسان قرار گرفته اند. فریمورک UIKit زیربنای لازم برای ارائه برنامه های مبتنی بر رویداد و گرافیک را تحت بستر سیستم عامل iOS فراهم می کند. همانطور که پیشتر گفته شد از دیگر وظیفه های مهم این لایه که مختص به پلتفرم iOS هستند می توان به چندوظیفه ای، بخش اعلانات و پیغام ها و دسترسی ها اشاره کرد.
لایه Cocoa Touch از نظر کمی و کیفی امکانات زیادی را در اختیار توسعه دهندگان قرار می دهد که از جمله می توان به
auto layout, printing, gesture recognizers و بخش پشتیبانی سند اشاره کرد. این لایه علاوه بر فریمورک UIKit همچنین شامل فریم ورک های Map Kit, Event Kit و فریمورک Message UI برای دیگر عملیات کاربردی است.
برای بررسی یک لیست کامل از تمامی فریمورک های لایه Cocoa Touch می توانید به لینک iOS Technology Overview مراجعه کنید.
لایه رسانه :
بخش های گرافیکی، صوتی و ویدئویی همگی توسط لایه رسانه یا Media Layer کنترل می شوند. این لایه شامل یکی سری فناوری های کلیدی به مانند Core Graphics, OpenGL ESOpenAL, AV Foundation و Core Media بوده که هر کدام وظیفه مشخصی را بر عهده گرفته اند.
لایه رسانه دربردارنده یک مجموعه بزرگ از فریمورک ها، برای انجام ععلیات های مختلف است. به عنوان مثال از فریم ورک Assets Library به منظور دسترسی به تصاویر و ویدئوها، از فریمورک Core Image برای دستکاری تصاویر از طریق فیلترها و در آخر از فریمورک Core Graphics برای ترسیمات اشکال به صورت دوبعدی استفاده می شود.
با مراجعه به لینک iOS Technology Overview می توانید یک لیست کامل از تمامی فریمورک های موجود در لایه رسانه را همراه با توضیحات مختصر مشاهده کنید.
لایه Core Services :
وظیفه این لایه نیز مدیریت سرویس های سیستمی پایه ای است که برنامه های بومی iOS از آنها برای پیشبرد کار خود بهره می برند. همچنین لایه Cocoa Touch که پیشتر به آن اشاره شد وابستگی خاصی به لایه Core Services برای انجام برخی عملیات مورد نیاز خود دارد. این لایه یعنی Core Services یک سری از ویژگی های واجب و حیاتی مانند block objects, Grand Central Dispatch، In-App Purchase(خرید درون برنامه ای) و سیستم iCloud Storage را تحت اختیار توسعه دهندگان قرار می دهد.
یکی از جدیدترین قابلیت های اضافه شده تحت لایه Core Services، ویژگی ARC یا همان Automatic Reference Counting است. این ویژگی در واقع یک قابلیت سطح کامپایلر بوده که در سال 2011 و همراه با عرض iOS 5 از طرف شرکت اپل به این لایه اضافه شد. در اصل از ابتدا ARC با هدف ساده سازی فرایند مدیریت حافظه در زبان شیگرای C توسط شرکت اپل طراحی شده است.
در این سری مقالات هنوز اطلاعاتی در مورد فرایند مدیریت حافظه ارائه نشده است اما بسیار مهم است که به هنگام توسعه برنامه های مبتنی بر Cocoa با مفاهیم اولیه مدیریت حافظه آشنا بوده و درک درستی از آنها داشته باشید.
به هر حال ARC یک قابلیت بزرگ بوده و مهم است که بدانید این قابلیت چه کارهایی را برای شما انجام میدهد.
در صورتی که در حال حاضر با بخش های مدیریت حافظه بیگانه هستید شدیداً توصیه می کنم به مقالات معتبری که در اینترنت منتشر شده مراجعه کرده و با نحوه کار آنها آشنا شوید.
فریمورک Foundation هم یکی از دیگر فریمورک های ضروری بوده که تحت بستر برنامه های تولیدی iOS و OS X مورد استفاده قرار می گیرد. در مقاله بعدی اطلاعات بیشتر و دقیقتری را در مورد این فریمورک در اختیارتان قرار خواهیم داد. در واقع کارایی فریمورک Foundation محصور به وجود و استفاده از کلاس های مفیدی همچون NSArray،NSDictionary و NSDate نبوده و نخواهد بود.
این فریمورک در داخل خود یک کلاس ریشه تحت عنوان NSObject را جای داده است. که یک رابط پایه را تحت زبان شیگرای C و در زمان اجرا ارائه داده و همچنین چندین الگو مانند سیاست های تدوینی برای object ownership را معرفی می کند. این فریمورک نیز به مانند فریمورک Core Foundation که در ادامه به معرفی آن خواهیم پرداخت این امکان را به توسعه دهنده می دهد تا تا داده ها و کدهای خود را به آسانی تحت کتابخانه ها و فریمورک های مختلف به اشتراک بگذارند.
دیگر فریمورک مهمی که در دل لایه Core Services جا خشک کرده و رابطه نزدیک و محکمی با فریمورک Foundation برقرار کرده است فریمورک Core Foundation بوده که مبتنی بر زبان C عمل می کند. همانطور که پیشتر گفته شد این فریمورک نیز به مانند Foundation به کتابخانه ها و فریمورک های مختلف اجازه می دهد تا داده ها و کدهای خود را به راحتی به اشتراک بگذارند.
فریمورک Core Foundation ویژگی‌ای دارد که از آن با نام toll-free bridging یاد می شود. این ویژگی سبب جایگزینی اشیاء Cocoa به جای اشیائ موجود در Core Foundation در پارامترهای تابعی می شود. البته ناگفته نماند که عکس این حالت نیز امکان پذیر است.
برای بررسی یک لیست کامل از مجموعه فریمورک های موجود تحت لایه Core Services به لینک iOS Technology Overview مراجعه کنید.
لایه Core OS :
اغلب کارکردهای ارائه شده توسط سه لایه سطح بالاتر بر روی لایه Core OS و ویژگی های سطح پایین آن بنا شده است. لایه Core OS شامل چند فریمورک جامع بوده که برنامه های در دست توسعه شما می توانند برای پیشبرد کار خود به طور مستقیم از آنها استفاده کنند در این بین فریمورک های Security و Accelerate که عملیات های مربوط به امنیت و شتابسنج فیزیکی دستگاه را مشخص می کنند از جمله فریمورک های این لایه هستند.
لایه Core OS همچنین وظیفه کپسوله سازی محیط کرنل و رابط های سطح پایین یونیکس را بر عهده گرفته است تا برنامه شما بنا به وجود برخی دلایل امنیتی آشکار، اجازه دسترسی به برخی موارد را نداشته باشد.

اما به هر حال از طریق کتابخانه libSystem که بر اساس زبان C طراحی شده است، خیلی از ویژگی های سطح پایین مانند BSD sockets، POSIX threads و سرویس های DNS می توانند به صورت مستقیم مورد استفاده قرار گیرند.
مستندات :
نزدیک ترین راهنمای شما به هنگام توسعه برنامه های بومی مبتنی بر iOS  در واقع همان مستنداتی هستند که در داخل بسته توسعه نرم افزاری iOS جا خشک کرده اند. در اکثر بخش ها، مستندات کمک شایانی به شما کرده و سبب می شوند به هنگام مواجهه با یک فناوری یا فریمورک جدید با کمی کند و کاو به کارکرد اصلی آنها پی برده و در برنامه تحت توسعه خود از آنها استفاده کنید.
حتی با این وجود که مستندات به صورت آنلاین قابل دسترسی هستند اکثر توسعه دهندگان از مرورگر مستنداتی که در بستر Xcode نهفته شده استفاده می کنند. در محیط برنامه نویسی Xcode 5 شما می توانید مرورگر مستندات را با انتخاب گزینه  Documentation and API Reference تحت منوی Widnow به حالت اجرا در آورید.
به این دلیل که شما برای آشنایی و استفاده از فناوری ها و فریمورک ها در نقاط مختلفی از مستندات استفاده می کنید ما در ادامه راه های میانبری را به شما یاد خواهیم داد که با استفاده از آنها می توانید به آنچه که می خواهید آسان تر و سریعتر دسترسی پیدا کنید. همانطور که در پاراگراف قبلی گفته شد مرورگر مستندات به گونه ای طراحی شده که موجب دسترسی آسان شما به مستندات و محتواها شود. به همین منظور شما می توانید برای باز کردن سریع بستر مستندات کلید میانبر Shift + Command + 0 را در حالی که در رابط محیط برنامه نویسی Xcode 5 هستید فشار دهید.
به هنگام نوشتن کدهای خود در رابط ویرایشگر کد تحت بسترXcode، شما می تواند بین دو رابط ویرایشگر کد و مستندات در مواقعی که لازم است، یک کلاس و یا متدی را مورد بررسی بیشتر قرار دهید سوییچ کنید.
در حال حاضر دو روش کاربردی برای دسترسی به مستندات مورد نظرتان وجود دارد. یکی اینکه هر زمان که شما اشاره گر مواس خود را روی نام متد یا کلاس مورد نظر در رابط ویرایشگر کد تحت بستر Xcode قرار می دهید بخش Quick Help Inspector در سمت راست صفحه نمایان شده که  خلاصه ای از نحوه کارکرد متد یا کلاس مورد نظرتان را نشان می دهد. در بین متن های خلاصه موجود چندین لینک مفید نیز قرار داده شده تا در صورت نیاز به مرورگر مستندات برای دسترسی به اطلاعات بیشتر استفاده کنید.

به این دلیل که من همیشه بخش نوار کناری سمت راست صفحه را زمانی که با ویرایشگر کد در حال کار هستم مخفی می کنم از روشی جداگانه برای نمایش مستندات یک متد یا کلاس استفاده می کنم. زمانی که شما کلید Option روی صفحه کلید را فشار می دهید و اشاره گر مواس را روی نام متد یا کلاس مدنظرتان قرار می دهید، اشاره گر به حالت علامت سوال درآمده و نام متد یا کلاس نیز به حالت هایلایت یا همان برجسته در خواهد آمد. به این ترتیب با کلیک بر روی نام متد یا کلاس، پنجره جدیدی باز شده که شامل همان اطلاعات مختصری است که در بخش Quick Help Inspector نمایان می شوند. به مانند بخش Quick Help Inspector، در این پنجره نیز لینک های وجود دارد که شما می توانید در صورت نیاز با کلیک بر روی آنها به بخش مرورگر مستندات مراجعه کنید. در واقع این یک روش سریع و راحت است که می توانید برای سوییچ بین ویرایشگر کد و مرورگر مستندات از آن، مخصوصاً زمانی که با دو مانیتور کار می کنید بهره ببرید.
نتیجه گیری :
حال با توجه به توضیحات گفته شده، شما باید درک مناسبی از ساختار iOS SDK و لایه های مختلف و متعدد ساختار سیستم عامل iOS کسب کرده باشید. در ادامه این سری مقالات تمرکز خود را بر روی دو فریمورک ریشه‌ای برنامه iOS یعنی UIKit و Foundation خواهیم گذاشت. اگر علاقه مند هستید ادامه این سری مقالات را از دست ندهید.
به طور کلی نه تنها فریمورک های مذکور برای هر برنامه تحت توسعه، در بستر iOS لازم هستند بلکه هر کدام در دل خود مجموعه‌ای از کلاس های متنوع و کاربردی را جای داده‌اند که هر توسعه دهنده‌ای را برای پیشبرد کارش مجبور به استفاده از خود می کنند. در پایان امیدوارم از این مقاله آموزشی لذت و استفاده لازم را برده باشید.
نویسنده:هادی نجار

منبع:code.tutsplus.com

تعداد بازدید : 1829

نظرات
ناشناس
با سلام من از کجا برای پروژه هام میتونم برنامه نویس اپل پیدا کنم؟
ناشناس
دانلود ios sdk رو کجا پیدا کنیم؟
ارسال نظر

سوال امنیتی : مجموع دو عدد 7 و 6 =