Sobes.tech
Junior — Middle

როგორ ხორციელდება ავტომატური და ხელით მუშაობა მეხსიერებაზე iOS-ში, და რა მექანიზმები გამოიყენება რესურსების მართვისთვის?

sobes.tech AI

პასუხი AI-სგან

iOS-да хәтерне идарә итү төп ике ысул белән тормышка ашырыла: автоматик һәм кул белән.

  1. Автоматик хәтер идарәсе (ARC — Автоматик сылтамалар санагы)

    ARC — бу компиляторга урнаштырылган механизм, ул Objective-C һәм Swift объектлары өчен retain/release чакыруларын автомат рәвештә өсти. Ул объектка булган сылтамалар санын исәпли һәм санчы нульгә җиткәч, хәтерне бушата.

    Мисал:

    class Person {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    var p1: Person? = Person(name: "Иван")
    var p2 = p1 // сылтамалар саны арта
    p1 = nil // сан кими
    p2 = nil // объект бушатыла
    
  2. Кул белән хәтер идарәсе

    Иске iOS версияләрендә (ARC-тан элек), программист кул белән retain, release һәм autorelease ысулларын чакырды, объектларның тормыш циклын идарә итү өчен.

  3. Ресурсларны идарә итү

    Моннан тыш, ресурсларны (файллар, челтәр тоташулары, таймерлар) идарә итү өчен deinit кебек Swiftта конструкцияләр киң кулланыла һәм объект юкка чыкканда ресурслар бушатыла.

Шулай ук, вакытлыча объектларны идарә итү өчен autoreleasepool кебек төзелмәләр киң кулланыла.

Шулай итеп, ARC хәтер белән эшләүне сизелерлек җиңеләйтә, агып китү мөмкинлеген киметә, һәм кул белән идарә итү сирәк кулланыла һәм бары тик махсус очракларда гына кулланыла.