локальная переменная, оптимизация и ARC - PullRequest
2 голосов
/ 29 февраля 2012

Учитывая NSArray *tagsArray и NSMutableDictionary *cache не пусто.

Это:

for (Tag *tag in tagsArray) {
    NSString *name = tag.name;
    [cache setObject:tag forKey:name];
}

не должно быть медленнее, чем это:

for (Tag *tag in tagsArray) {
    [cache setObject:tag forKey:tag.name];
}

?

__strong var 'name' не будет использовать неявное сохранение / освобождение ARC?Компилятор фактически сгенерирует второе из первого?

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

Да, это то же самое для ARC, потому что в первом примере нет другого кода, который взаимодействует с переменной "name".

В будущем постарайтесь понять, что ARC модифицирует ваш код для повышения производительности и оптимизации, а не наоборот.

Вот ссылка со всей документацией для ARC - должен знать - http://clang.llvm.org/docs/AutomaticReferenceCounting.html

0 голосов
/ 22 августа 2013

Если ChildClass objecA, objecB .... имеет переменную экземпляра, и ParentClass пытается назначить переменную экземпляра ChildClass (которая является переменной экземпляра ParentClass и сильным указателем),

, тогда объект ChildClass 'действуеткак тот же объект.Хотя это не одно и то же.Определенно не то же самое.

...