مدیریت حافظه در برنامه نویسی iOS به زبان Swift - قسمت دوم

به نام خدا

بعد از چهار ماه گذشتن از قراردادن قسمت اول این آموزش تصمیم گرفتم قسمت دوم رو قرار بدم

یه مرور یه خطی به آموزش قبلی:

۰- هممممه ی تایپ ها اعم از Int, String, Array, Dictionary,Struct و... (به غیر از کلاس و کلاژر ) وقتی داخل یه متغییر دیگه ای assign میشن در واقع یه کپیشون توی رم ساخته میشه و اون متغییر به این مقدار جدید اشاره میکنه یعنی با تغییر دادن این متغییر جدید روی متغیر قبلی هیچ تغییری ایجاد نمیشه

۱.سویفت از مدیریت حافظه مرجع شماری استفاده میکنه

۲. دو تا از تایپ های سویفت به صورت مرجع استفاده میشن و مرجع شماری فقط برای این دو تا نوع استفاده میشه اولیش کلاس ها هستن و دومیش Clouser ها

۳. وقتی یک کلاس یا Clouser ساخته میشه و در یک متغییر assign میشه retain count اون آبجکت برابر ۱ میشه و هرچقدر این آبجکت رو در متغییر های دیگه assign کنیم یکی به این عدد اضافه میشه  و هرموقع متغییر ها scope شون تموم بشه یا خودمون برابر با nil قرارشون بدیم از این عدد کم میشه تا به صفر برسه و اون آبجکت ساخته شده از توی رم حذف بشه

۴. اگر یک کلاسی رو بسازیم و توی اون کلاس توی scope اصلی اون کلاس یک کلاس دیگه ای رو تعریف کنیم و بهش مقدار بدیم و براش کلاس فعلیمون رو بفرستیم یه retain cycle ساختیم که هیچوقت از توی رم حذف نمیشه (راه های هندل کردن چنین مشکلی رو توی این پست بررسی میکنیم)

نوشته شده توسط محمد فلاح

منتشر شده در

۹ اسفند

مدیریت حافظه در برنامه نویسی iOS به زبان Swift

بسم الله الرحمن الرحیم

شاید با نصب یه آیدی و ران کردن یه اپلیکیشن روی گوشیمون خیلیامون فکر کنیم که حالا یه برنامه نویس شدیم. قضیه اونجایی بدتر میشه که یه اپلیکیشن بزرگ بزنیم بعد اینکه یه اپلیکیشن نسبتا بزرگی رو زدیم (مثلا حس کردیم برنامه های بزرگی که الان موجود هستن و نصب چندده میلیونی دارن رو میتونیم با دانش فعلیمون پیاده کنیم) حس گندگی میکنیم و دیگه خدا رو بنده نیستیم اون موقع به خودمون میگیم God Of iOS.

نوشته شده توسط محمد فلاح

منتشر شده در

۲۷ مهر

طراحی و ساخت سیستم عامل - جلسه یازدهم (مفاهیم)

به نام خدا

سلام خدمت همه هموطنان عزیزم!

در این جلسه میخواهیم به مفاهیم سیستم عامل و کرنل و چیز های مورد نیاز بپزدازیم!

این جلسه در ادامه جلسه دهم قرار دارد که البته با اختلاف زمانی 2 سال منتشر میشود :)

نوشته شده توسط علی فلاح

منتشر شده در

۱ دی

هرآنچه از RxSwift آموختم! (قسمت دوم)

kبه نام خدا

توی قسمت اول فهمیدیم که RxSwift به چه کاری میاد شاید شما با مطالعه همون قسمت رفتید و توی اینترنت سرچ کردید که سریع تر یاد بگیرید اما با یه عالمه کد مواجه شدید

اشکالی نداره RxSwiftهمینجوریه یعنی کدهاش به ظاهر دشوار و طولانیه که آدم گاهی به ذهنش میرسه بیخیال بشه اما وقتی یادگرفت لذت میبره از خوندن و نوشتنش

نوشته شده توسط محمد فلاح

منتشر شده در

۲۳ آذر

آموزش Error Handling در سویفت

 

به نام خدا

یکی از مباحث مهم توی هر زبانی طریقه هندلینگ ارور های موجود در برنامه به بهترین شکل هست

نوشته شده توسط محمد فلاح

منتشر شده در

۱۶ آذر

استفاده از حافظه بلاک رم در FPGA شرکت XILINX

به نام خداوند بخشنده و مهربان!

سلام عرض میکنم خدمت دوستان عزیزم و سروران گرامی!

امروز تصمیم گرفتم چیزی بزارم که خودم تازه یاد گرفتم! راستش یه چند وقتی هست که دنبال مطالب جدید برای یاد گیری هستم ولی موفق نشدم! احساس میکنم چون دِینم رو ادا نکردم اینطور شده! بنابراین اومدم یه مطلب براتون قرار بدم! (ببینید چقدر دوستتون دارم s02)

نوشته شده توسط علی فلاح

منتشر شده در

۱۶ اردیبهشت

طراحی و ساخت سیستم عامل - جلسه دهم (نمایش کاراکتر در مود محافظت شده)

به نام خداوند بخشنده و مهربان!

سلام عرض میکنم خدمت شما دوستان عزیز و هموطنان گرامی! امیدوارم حال همه تون خوب باشه!

این بار هم قسمت بعدی طراحی و ساخت سیستم عامل رو براتون آماده کردم. امیدوارم مفید باشه!

نوشته شده توسط علی فلاح

منتشر شده در

۲۶ مرداد

علامت * قبل از نام تابع چیست؟

به نام خدا

سلام خدمت شما دوستان عزیز و هموطنان گرامی!

شاید شما هم توی برنامه نویسی زبان C و C++ متوجه این موضوع شده باشید که برخی توابع علامت * دارن! اگه شما هم میخواهید جواب این سوال رو پیدا کنید با ما همراه باشید!

نوشته شده توسط علی فلاح

منتشر شده در

۱۸ مرداد