Описание тега retain-cycle

Цикл сохранения - это ситуация в управлении памятью с подсчетом ссылок, когда два (или иногда более) объекта имеют сильные ссылки друг на друга. Обычно объекты уничтожаются, когда их счетчик ссылок достигает нуля, и в это время освобождаются содержащиеся в них ссылки. В цикле каждый объект поддерживает жизнь другого, и ни один из них не будет уничтожен, если цикл не будет нарушен намеренно.
2 ответа

Как разрешить сохранение цикла в блоке для void*?

У меня есть статическая библиотека C++, которая связана в моем приложении для iOS. У меня есть void* для доступа к некоторым действиям, предоставляемым библиотекой, из моего кода. Проблема в том, что я активировал ARC в своем проекте, и он кричит, ч…
16 авг '12 в 09:01
2 ответа

Вызывает ли передача функции, принадлежащей self, цикл сохранения, когда он не находится в замыкании?

Если вам нужно ссылку self внутри замыкания, это хорошая практика, чтобы передать его как weak или же unowned чтобы предотвратить сохранение цикла. Если я передам функцию, которая принадлежит self напрямую, это приведет к сохранению цикла? Или это н…
2 ответа

Почему рекомендуется использовать _weak ссылку с делегатами

Привет всем, кто-нибудь уточнит мне, почему рекомендуется использовать _слабую ссылку для делегатов, а не строгую ссылку? хотя мы также можем использовать строгую ссылку для делегатов. Кто-то, пожалуйста, расскажет мне с лучшим и описательным пример…
21 июн '14 в 12:16
1 ответ

Как использовать сильные и слабые с одноуровневыми объектами (каждый из которых может быть родительским) в Objective-C ARC?

У меня есть два объекта Objective-C, которые так или иначе связаны друг с другом. Вы можете думать об этом как о двусторонних отношениях. С ARC я понимаю, что родитель должен содержать строгую ссылку на свой дочерний объект, в то время как дочерний …
1 ответ

Разве плохо установить два представления в SplitView для хранения ссылки друг на друга?

В настоящее время я пишу программу RSS, в которой представления моего splitViewController должны общаться друг с другом. Оба они в настоящее время содержат собственный экземпляр, объявленный в делегате приложения, как указано ниже. Я хочу знать, есл…
0 ответов

Должно ли само себя быть захвачено как сильное в завершение presentViewController?

При написании обработчика закрытия presentViewController completion должна ли ссылка на себя быть сильной (по умолчанию), слабой или не известной? [self presentViewController:actionSheet animated:YES completion:^{ [self.tableView deselectRowAtIndexP…
1 ответ

Почему это свойство viewController не предотвращает освобождение объекта?

Пожалуйста, рассмотрите следующий код: class Module { let viewController = ExampleViewControler() deinit { print("deinit") } } class ExampleViewControler: UIViewController {} @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {…
2 ответа

Сильный захват "себя" в этом блоке может привести к сохранению цикла

У меня есть запрос с блоком. Но компилятор выдает предупреждение "Сильный захват" себя "в этом блоке может привести к сохранению цикла" __weak typeof(self) weakSelf = self; [generalInstaImage setImageWithURLRequest:[NSURLRequest requestWithURL:[NSUR…
2 ответа

Как прервать многопоточность Core Data, чтобы сохранить циклы при объединении изменений?

В моем приложении я использую CoreData для хранения и отображения данных с помощью NSFetchedResultsController. Я следовал инструкциям Raywenderlich, чтобы сделать это, и в нем много кода - но в целом он работает должным образом - опубликую его части…
3 ответа

Освободить контроллеры представления в контроллере навигации, которые имеют ссылку на себя

Скажем, у меня есть контроллеры представления A, B, C, D & E, все они встроены в контроллер навигации. В контроллере представления B у меня есть собственный объект UIImageView. В C у меня есть пользовательский объект UITextfield. Оба пользовательски…
1 ответ

Сохранить цикл с AFNetworking

Я пишу галерею с изображениями, которые могут быть загружены по URL с AFNetworking, В Init метод ImageView объект я вызываю функцию, которая отправляет запрос. Вот: - (void) loadWithUrl:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequ…
25 сен '13 в 12:16
1 ответ

Swift Memory Management: хранение функций в var

Я ищу лучшую практику для хранения функций как переменных в других объектах. В частности, я стараюсь избегать сохранения циклов, присущих захвату self в функции. Исходя из target-c и блоков, я обычно делал бы что-то вроде этого: __weak id _self = se…
23 янв '15 в 14:31
1 ответ

Почему сохраняется цикл утечки памяти?

Я немного запутался в сохранении цикла. Как показывают рисунки, это цикл сохранения. Мое мнение таково: когда выйдет из области видимости,test0 выпустит,obj_ отпустит, поэтому счетчик ссылок объектов A и B будет один Кроме того, когда это происходит…
19 мар '16 в 02:24
2 ответа

Вызывает ли вызов метода внутри блока, который вызывает другой метод, ссылающийся на себя, цикл сохранения?

Можно doFirst вызвать цикл сохранения здесь? @interface Example : NSObject @property (nonatomic, strong) void (^block)(); @end @implementation Example - (void)doFirst { __weak id weakSelf = self; self.block = ^ { [weakSelf doSecond]; }; self.block()…
20 фев '14 в 13:32
1 ответ

iOS - Слабый var все еще может вызвать сохранение цикла?

Вот мой настоящий код: @IBOutlet weak var contentTextView: SmartTextView! { didSet { self.contentTextView.onDidBeginEditing = { $0.layer.borderColor = Util.green.CGColor } self.contentTextView.onDidEndEditing = { $0.layer.borderColor = Util.gray.CGC…
13 сен '15 в 16:06
1 ответ

Swift: сохранить цикл с помощью NSOperation

В моем приложении я использую класс загрузчика изображений для загрузки изображений из Интернета для просмотра коллекции. Класс отслеживает операции загрузки и отменяет их, когда ячейки для изображений больше не видны в представлении коллекции. Эта …
1 ответ

Быстрые замыкания, вызывающие сильное удержание цикла с самим собой

Я просто хочу знать, правильно ли я понимаю это или нет. Таким образом, в соответствии с документами Apple, когда вы создаете замыкание как свойство экземпляра класса, и это замыкание ссылается на себя (класс, создавший свойство замыкания), это прив…
09 май '18 в 20:11
2 ответа

Должна ли асинхронная функция swift сохранять сильную ссылку на объект?

Мы реализовали и расширили NSData, который асинхронно сохраняет данные в URL. Вот краткая версия функции. extension NSData { func writeToURL1(url:NSURL, completion: () -> Void) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DE…
13 сен '16 в 00:18
1 ответ

Objective-C сохранить цикл между 2 объектами

Вот код: TestA *ta = [[TestA alloc] init]; TestB *tb = [[TestB alloc] init]; ta.b = tb; tb.a = ta; Я пытался установить ta = nil или же tb = nil, Не сработало но ta.b = nil работал. Зачем?
11 ответов

Как правильно справляться со слабым Я в стремительных блоках с помощью аргументов

В моем TextViewTableViewCellУ меня есть переменная для отслеживания блока и метод конфигурации, в котором блок передается и назначается.Вот мой TextViewTableViewCell учебный класс: // // TextViewTableViewCell.swift // import UIKit class TextViewTabl…
28 июн '14 в 15:33