Pull to refresh

Comments 5

Понятно что автоматическое удобнее чем ручное. Интереснее было бы сравнить ARC с другими алгоритмами "сборки мусора", применяемыми в других языках.

Самый дорогой механизм из всех, наверное

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    // тут первая ссылка на объект
    NSString *str = [[NSString alloc] initWithString:@"Hello"]; 

    [str retain];   // увеличиваем счётчик ссылок

    NSLog(@"%@", str);

    [str release];  // уменьшаем счётчик

    [str release];  // освобождаем объект

    return 0;

}

опять будете рассказывать, что статья не сгенерирована нейросетями? Добавьте сюда лог `retainCount` и посмотрите, что он выведет на самом деле.

Привет!

Данный код приведен в демонстрационных целях и тут этот метод не выведет ничего полезного, более того метод, который Вы предлагаете добавить никакой полезной информации не несет и об этом говорит сам 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 🙂

я не могу понять - вы даже в комментариях будете использовать нейросеть?

NSString незаметно превратился в NSMutableString, с которым код будет работать. При этом в оригинальной статье ошибку вы так и не исправили.

И всю статью можно разбирать на такие "перлы"

Sign up to leave a comment.

Articles