Обновить
5
0
Shkarin Egor@Grandschtien

Пользователь

Отправить сообщение

Привет!

Данный код приведен в демонстрационных целях и тут этот метод не выведет ничего полезного, более того метод, который Вы предлагаете добавить никакой полезной информации не несет и об этом говорит сам Apple в своей документации.

По хорошему, конкретно так, конечно, MRC не использовался, однако повторюсь - код был приведен в целях демонстрации, чтобы показать принцип работы методов retain и release.

Однако, если все же хочется посмотреть на количество ссылок через этот метод, то вот:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    NSMutableString *str = [[NSMutableString alloc] initWithString:@"Hello"];
    NSLog(@"%lu", [str retainCount]); // 1
    
    [str retain];
    NSLog(@"%lu", [str retainCount]); // 2
    
    [str release];
    NSLog(@"%lu", [str retainCount]); // 1
    
    [str release]; // 0
    // тут вызов retainCount будет вызовет креш, так как объект удален
    str = nil;

    return 0;
}

Перед этим нужно будет у main.m поставить флаг -fno-objc-arc в Build phases -> Compile sources

Однако повторюсь, Apple не рекомендует использовать этот метод, как и в целом MRC 🙂

Привет! Спасибо за комментарий)

Противоречий я тут не вижу, в первом случае я говорю об общем понимании работы value типов, во втором случае я говорю об оптимизации COW, что является исключением из правила только для коллекций(которое предоставляется у Swift "из коробки").

Спасибо что обратили внимание, там действительно был недочет при описании ЖЦ объекта. Я его поправил:

3. Deinited — здесь у объекта нет сильных ссылок, но могут быть слабые или бесхозные ссылки.

Если слабых ссылок нет и счетчик бесхозных ссылок достигает 0, объект переходит в Dead.

Если есть слабые ссылки и счетчик бесхозных ссылок достигает 0, объект переходит в Freed.

Также обновил формулировку с ссылкой на файл в репозитории Apple.

По поводу путаницы, я уже отвечал) Это было сделано намеренно, хотел попробовать метод, который я увидел в книге.

Ну а что касается приглашения, то тут обвинение необоснованно. Я писал статью не для того, чтобы его получить, а для того, чтобы поделиться своими заметками с сообществом, и буду продолжать ими делиться в дальнейших статьях)

Привет! Спасибо за комментарий)

На самом деле это было сделано специально. Я подчеркнул этот подход из книги "Как научиться учиться: Навыки осознанного усвоения знаний" Ульриха Бозера. Там книга строится на том, что вопросы по главе могут появляться не сразу после нее, а позже, например через главу. Это позволяет читателю возвращаться и искать информацию тем самым помогает усвоению материала

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Разработчик мобильных приложений
Swift
Xcode
Разработка под iOS