Данный код приведен в демонстрационных целях и тут этот метод не выведет ничего полезного, более того метод, который Вы предлагаете добавить никакой полезной информации не несет и об этом говорит сам 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.
По поводу путаницы, я уже отвечал) Это было сделано намеренно, хотел попробовать метод, который я увидел в книге.
Ну а что касается приглашения, то тут обвинение необоснованно. Я писал статью не для того, чтобы его получить, а для того, чтобы поделиться своими заметками с сообществом, и буду продолжать ими делиться в дальнейших статьях)
На самом деле это было сделано специально. Я подчеркнул этот подход из книги "Как научиться учиться: Навыки осознанного усвоения знаний" Ульриха Бозера. Там книга строится на том, что вопросы по главе могут появляться не сразу после нее, а позже, например через главу. Это позволяет читателю возвращаться и искать информацию тем самым помогает усвоению материала
Привет!
Данный код приведен в демонстрационных целях и тут этот метод не выведет ничего полезного, более того метод, который Вы предлагаете добавить никакой полезной информации не несет и об этом говорит сам Apple в своей документации.
По хорошему, конкретно так, конечно, MRC не использовался, однако повторюсь - код был приведен в целях демонстрации, чтобы показать принцип работы методов
retainиrelease.Однако, если все же хочется посмотреть на количество ссылок через этот метод, то вот:
Однако повторюсь, Apple не рекомендует использовать этот метод, как и в целом MRC 🙂
Привет! Спасибо за комментарий)
Противоречий я тут не вижу, в первом случае я говорю об общем понимании работы value типов, во втором случае я говорю об оптимизации COW, что является исключением из правила только для коллекций(которое предоставляется у Swift "из коробки").
Спасибо что обратили внимание, там действительно был недочет при описании ЖЦ объекта. Я его поправил:
Также обновил формулировку с ссылкой на файл в репозитории Apple.
По поводу путаницы, я уже отвечал) Это было сделано намеренно, хотел попробовать метод, который я увидел в книге.
Ну а что касается приглашения, то тут обвинение необоснованно. Я писал статью не для того, чтобы его получить, а для того, чтобы поделиться своими заметками с сообществом, и буду продолжать ими делиться в дальнейших статьях)
Привет! Спасибо за комментарий)
На самом деле это было сделано специально. Я подчеркнул этот подход из книги "Как научиться учиться: Навыки осознанного усвоения знаний" Ульриха Бозера. Там книга строится на том, что вопросы по главе могут появляться не сразу после нее, а позже, например через главу. Это позволяет читателю возвращаться и искать информацию тем самым помогает усвоению материала