iOS සහ macOS යෙදුම් ලියන විට, Swift භාෂාවේ Class වස්තු කවදා මතකයෙන් ඉවත් කෙරෙනවා කියලා ඔබට හොඳින් දැනගන්න අවශ්යයි. ඒ ගැන තේරුම් ගැනීමට ARC (Automatic Reference Counting) සහ deinit ක්රමය මූලික වේ.
Struct සහ Class අතර වෙනස – Struct එකක් ඔබ සෑදූ මොහොතේම ඒකේ දත්ත නිදහස් වේ. එය භාවිතා කරන function එක අවසන් වුවමනා, struct එක අතුරුදන් වේ. ඒත් Class එකක් වාරිකයක් (reference) මගින් පාලනය කෙරේ; එකම දත්තයට බහු වාරිකයන් තිබිය හැක.
ඒ නිසා Swift සෑම Class වස්තුවකටම ඉලක්කම් ගණකයක් තබයි. ඔබ නව variable එකකට Class එකක් පවරන්නෙත්, function එකකට යවන්නෙත්, array එකකට එක් කරන්නෙත් ඒ ගණකය එකක් ඉහලට යයි. ඒ වාරිකයක් ඉවත් වුනොත් ගණකය එකක් අඩු වේ. ගණකය ශූන්යයට පැමිණිමෙන් පසු, Swift “කවුරුත් මේ වස්තුව බලන්නේ නැත” කියලා තේරුම් ගනී, ඒක මතකයෙන් ඉවත් කරනවා.
මෙම අවස්ථාවේ deinitializer (deinit) ක්රමය ක්රියාත්මක වේ. init වගේම, deinit යනු Class එකක් නිර්මාණය වූ පසු එහි අවසන් වීමේදී ස්වයංක්රීයව කැඳවෙන විශේෂ ක්රමයකි. ඔබට එය හස්තයෙන් ඇමතීමට නොහැක, ඒත් ඔබට එය නිර්වචනය කර අවශ්ය පිරිසිදු කිරීමේ කාර්ය (file හෝ network සම්බන්ධතා වසා දැමීම වැනි) කරගත හැක.
උදාහරණයක් ලෙස, "TrainingCamp" නම් Class එකක් සකසා, එහි init තුළ "Camp opened" කියලා පණිවිඩයක්, deinit තුළ "Camp closed" කියලා පණිවිඩයක් දක්වා ගත හැක. ඔබ camp1, camp2 වැනි වාරික දෙකක් සකසා, එකක් nil කර දුන්නාම, ඒ වාරිකය තවත් එකක් තබාගත්තා නම් deinit ක්රියාව නොවේ. දෙකම nil කළ පසු පමණක් deinit ක්රමය ක්රියාත්මක වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ iOS සංවර්ධකයන්ට ARC සහ deinit පිළිබඳ අවබෝධය ඉතා වැදගත්. මතක පරිපාලනය හොඳින් කළ නොහැකි නම්, යෙදුම් අස්ථිරව පණ්ඨා විය හැක, එය පරිශීලක අත්දැකීම අඩු කරයි. ආරම්භක සිසුන්ට මේ මූලධර්ම ඉගෙන ගැනීම මඟින් කෝඩ් ලේඛන ගුණාත්මකව, පිරිසිදු ලෙස ලිවිය හැක. ව්යාපාරික තලයේ, මතක පිරිසිදු කිරීමේ වැරදි නිසා සේවා අඩාලවීම, පාරිභෝගික අතුරුදන් වීම වැනි ගණනාවක් වැළැක්විය හැක.
ඒ නිසා, Swift භාෂාවේ ARC හා deinit ගැන දැන ගැනීම, ශ්රී ලංකාවේ තාක්ෂණික පරිසරය තවත් ශක්තිමත් කරයි, ගුණාත්මක iOS යෙදුම් නිර්මාණයට මාර්ගය සැලසයි.
අවසානයේ, ඔබේ Class වස්තු මතකයෙන් ඉවත් වන වේලාව හඳුනා ගැනීම, පිරිසිදු, කාර්යක්ෂම, ආරක්ෂිත යෙදුම් නිර්මාණයේ අත්යවශ්ය පියවරක් බව මතක තබාගන්න.