2015-10-19 2 views
0
NSString *p = [[storagePath retain] autorelease]; 

1) ARC запрещает явное сообщение отправки «autorelease».Несколько ошибок в строке

2) ARC запрещает явное сообщение отправки «Сохранить».

3) автореферат недоступен. Не доступен в автоматическом режиме подсчета ссылок.

4) Сохранение недоступно. Недоступно в автоматическом режиме подсчета ссылок.

Строка содержит несколько ошибок. Предложите проблемы и исправления.?

+0

Если это исходит из учебника, оно устарело. В ObjC теперь используется ARC для управления памятью, рендеринг 'keep',' autorelease' и 'release' устарел. См. Опубликованные ответы или [документацию (в Swift 2, однако)] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html) для более подробной информации. – Arc676

ответ

1

АРК относится к (Автоматический подсчет ссылок), который отвечает за память рилизинг безопасно.

Рев линия означает:

//NSString *p = [[storagePath retain] autorelease]; 

«[storagePath сохраняет]» означает storagePath приращения переменного это ссылка, добавив 1.

Таким образом, это необходимо освободить всякий раз, когда он больше не будет использоваться. autorelease выполнит эту задачу автоматически.

Но когда яблоко представил ARC всегда делать autorelease все (за исключением: сложного контура)

Вам не нужно использовать autorelease и теперь сохраняют свойство NSString класса больше не существует. Так что, не нужно делать сохранитьстрока. Просто написать следующее

NSString *p = storagePath; 
+0

Поскольку ARC делает все для вас безопасным освобождением памяти – Jamil

1

(АРК "Automatic Reference Counting", новая функция приходит underwith прошивкой 5 и далее). Поэтому вам не нужно вручную удерживать или отпускать.

// directly you want to access 

NSString *p = storagePath; 

Вы можете либо удалить ваш сохранить вызов все вместе или отключить ARC, выполнив следующие действия:

Нажмите на название проекта на экране навигации в левой части, перейти к Цели -> Сформировать фазы и добавить -fno-objc-arc в «флагов компилятора» для любых соответствующих файлов.