1. Objective C / Говнокод #12648

    −110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    - (void)shutdown {
        ...
        // shutdown routine
        ...
        [self retain];
        dispatch_async(_decodeQueue, ^{
            [self cleanup];
        });
    }
    
    - (void)cleanup {
        [self release];
    }

    Старый-добрый memory management.
    Между прочим, код из платной библиотеки...

    Запостил: clockworkman, 25 Февраля 2013

    Комментарии (13) RSS

    • Блоки без ARC - это вообще жесть. Задолбаешься все правильно обрабатывать.
      Ответить
    • > код из платной библиотеки.
      ворованный?
      Ответить
    • 2pilot34 блоки без ARC как раз нормальные, а c ARC, если девелопер, слабо представляет memory management, то забывает week и куча ликов на выходе
      2absolut код купленный.
      Ответить
      • Не понимаю, как можно забыть weak. Абсолютно интуитивная вещь.
        Ответить
        • > как можно забыть
          Ну, если не читать доку, то можно о нем даже и не знать. Кстати, а что делает этот самый weak в ObjC?
          Ответить
          • Да то же, что и везде.
            Обычно используется для ссылки ребенка на родителя (например, при объявлении делегата).
            Т.е. если мы занулим все ссылки на родителя кроме тех, что weak, то его retain count станет равным 0 и GC уничтожит его.
            Если забыть weak (и написать по привычке strong), до ребенок будет держать родителя, а тот, в свою очередь, будет держать ребенка. Соот-но, оба будут иметь ненулевой retain coint и никогда не будут уничтожены. Отсюда и leak.
            Ответить
            • А, слабая ссылка, понятно.

              > GC
              Да какой это GC... GC это на андроиде или в ObjC под макось. А это так, классический подсчет ссылок...
              Ответить
              • Да я понимаю, что это не совсем GC, просто использую общеупотребимый термин.
                Ответить
          • о-о-о, мой друг это значит вы никогда не сталкивались с джуниор-девелоперами, который сразу начинают писать под ARC. Будь моя воля я бы его запретил использовать всем у кто не писал пару лет без ARC
            Ответить
            • Увы, я начинал в момент релиза iOS 5, т.е. фактически не писал без ARC.
              Ответить
            • Программировал на Яве, где похер на сборку мусора. Потом дополнительно пошел на Objective-C без ARC. Научился там выстраивать строгие структуры, которые делают подсчет ссылок удобным и предупреждают утечки памяти. Эту строгость потом перенес и в свой Явовский код.
              Ответить
            • Был озадачен поиском вакансии iOS-девелопера - практически во всех вакансиях написано - управление памятью без использования ARC
              Ответить
              • Ну что, наверное попишем немного без ARC, полезно.
                Ответить

    Добавить комментарий