2017-02-07 29 views
1

Рассмотрим следующее заявление от "Big Nerd Ranch: Objective-C Программирование" - Глава 21: Object Instance переменные и свойства:Является ли подсчет ссылок таким же, как учет владения?

Когда объект имеет переменную экземпляра объекта, объект с указателем, как говорят, собственный объект, на который указывают.

Теперь рассмотрим следующий сценарий:

#import <Foundation/Foundation.h> 

int main(int arc, const char * argv[]) 
{ 
    @autoreleasepool { 
     NSString *message = @"Hello, world!"; 
    } 
    return 0; 
} 

Здесь сообщение объект имеет один (1) ссылка. Но ... у него есть владелец?

Если строго придерживаться цитируемого определения, нет объекта с указателем ссылающегося этот NSString. Означает ли это, что сообщение имеет одну (1) ссылку, но нет (0) владельцев?

И, если это так, что принимает ARC при принятии решения о том, следует ли освобождать объект? Количество ссылок или количество владения?

+0

Ваш код не полезен, потому что нет значимого подсчета ссылок, владения или освобождения. Строковые литералы имеют статическое время жизни. Они существуют от начала процесса до конца. –

ответ

1

Подсчет ссылок - это просто число, поддерживаемое объектом.

Собственность - это политика, почти философия. Это способ мышления, который пытается обеспечить последовательное вмешательство в счетчик ссылок объекта.

+1

И, пожалуйста, см. Мою книгу: http://www.apeth.com/iOSBook/ch12.html#_memory_management – matt