Retain-Cycle – вопросы и ответы

280
голосов
8
ответов
Допустим, у нас есть три объекта: бабушка, родитель и ребенок. Бабушка и дедушка сохраняют родителя, родитель сохраняет ребенка, а ребенок сохраняет родителя. Бабушка и дедушка выпускают родителя. ...
5 месяцев, 4 недели назад Tariq
88
голосов
3
ответа
У меня проблема с блоками и слабой ссылкой, я под ARC. Я построил класс, это бесплатный проект, который является своего рода простой оболочкой в Google Directions API, который вы можете скачать зде...
5 месяцев, 4 недели назад Andrea
-4
голоса
1
ответ
Все еще пытаясь получить зависание циклов удержания при использовании блоков. Мой вопрос: какой из следующих (если они есть) вызовет циклы сохранения? 1 [self.someProperty runSomeBlock:^{ [self.som...
6 месяцев назад Jiho Kang
58
голосов
2
ответа
В одном из моих классов я использую массив делегатов (класс - одиночный). Это вызывает цикл удержания. Я знаю, что могу избежать цикла сохранения, когда я использую только одного делегата, сделав д...
6 месяцев назад Leontien
80
голосов
1
ответ
Было просто интересно, если кто-нибудь столкнется с этим, а если и о чем беспокоиться:
6 месяцев назад Ben Guild
70
голосов
2
ответа
В качестве теста для обеспечения того, чтобы сцены были dealloc'd, я добавлял: -(void)dealloc{ NSLog(@"scenename Dealloc); } Я заметил, что иногда этот метод не вызывается, у меня были предыдущие п...
6 месяцев назад SmokersCough
56
голосов
1
ответ
Я пытаюсь получить переменные и свойства в self в блоке для выполнения действий, но если я ссылаюсь на self или глобальную переменную в self когда self является объектом, выполняющим блок, он преду...
6 месяцев назад DDPWNAGE
144
голоса
4
ответа
Обновление: Я пробовал писать его, не делая его слабым, и, похоже, утечки нет. Поэтому, возможно, вопрос больше не нужен. В Objective-C ARC, когда вы хотите иметь закрытие, чтобы иметь возможность ...
6 месяцев назад user102008
70
голосов
2
ответа
Я читаю Руководство по языку программирования Apple Swift. В части о Сильном эталонном цикле для замыканий я попробовал другой тип замыкания, но не дал ожидаемого результата. class HTMLElement { le...
6 месяцев, 1 неделя назад Rudra Mishra
80
голосов
1
ответ
В приведенном ниже коде я правильно понимаю вопрос сохранения цикла и будет ли цикл сохранения? - (NSError *)importRoute:(NSDictionary *)route { [self.importContext performBlockAndWait:^{ [NSEntity...
6 месяцев, 1 неделя назад Ron
113
голосов
1
ответ
Документация Apple по этому вопросу гласит: Когда блок копируется, он создает сильные ссылки на переменные объектов, используемые в блоке. Если вы используете блок в реализации метода: Если вы обра...
6 месяцев, 1 неделя назад MegaManX
58
голосов
2
ответа
Если я создам класс агента, как это. который содержит слабую ссылку на другой объект агента. class Agent { weak var partner: Agent? var name: String init(name: String) { self.name = name } func mak...
6 месяцев, 1 неделя назад Ralph Korvin
91
голос
2
ответа
Я просматривал образец кода Apple для своего 2014-го заседания WWDC "Расширенные пользовательские интерфейсы с коллекционными представлениями" и натолкнулся на слабое объявление, которое выглядело ...
6 месяцев, 1 неделя назад Stefan Church
97
голосов
2
ответа
Я добавил ARC в приложение, над которым я работаю. К сожалению, он падает. Я обнаружил, что автоматический скрипт, который обновляет все приложения до ARC, дал __unsafe_unretained квалификатор для ...
6 месяцев, 1 неделя назад yonivav
107
голосов
4
ответа
Я пытаюсь правильно избегать удержания циклов с блоками в Objective C и не уверен, что вложенные блоки. Если я напишу простой блок следующим образом: [self doSomethingWithBlock:^{ [self doSomething...
6 месяцев, 2 недели назад SaltyNuts
82
голоса
1
ответ
Вот мой код: ship.runAction(SKAction.waitForDuration(5), completion: { self.ship.flyStraight()//retain self }) После нескольких дней поиска в Интернете проблем с памятью, я обнаружил, что в этом бл...
6 месяцев, 2 недели назад Alfred
119
голосов
2
ответа
Если я когда-либо установил AVPlayerLayer, тогда будет некоторый цикл сохранения, который предотвратит deinit . import AVFoundation class MyPlayer: AVPlayer { fileprivate(set) lazy var playerLayer:...
6 месяцев, 2 недели назад Cœur
81
голос
3
ответа
Кажется, что в синтаксисе списка захвата Swift наблюдается любопытный синтаксический сбой. Если я объявляю несколько захваченных переменных, спецификатор захвата применим только к первому: let clos...
6 месяцев, 2 недели назад zoul
57
голосов
1
ответ
Когда все было действительно сложно, и я хотел понять, почему мой счетчик счета был настолько высоким, я просто переопределял сохранение/освобождение и вызывал супер, устанавливал точку останова и ...
6 месяцев, 2 недели назад Stephen J
70
голосов
1
ответ
Я что-то здесь упускаю. Я пытаюсь построить tableviewcontroller, который будет отображать все ожидающие уведомления пользователя в моем приложении. Вот код: import UIKit import UserNotifications cl...
6 месяцев, 2 недели назад Rob
80
голосов
1
ответ
В настоящее время я пишу программу RSS, в которой мои представления splitViewController должны разговаривать друг с другом. Оба они в настоящее время хранят собственный экземпляр друг друга, которы...
6 месяцев, 3 недели назад TheCodingArt
57
голосов
1
ответ
Я понимаю типичный цикл сохранения с закрытием, когда ссылаюсь на себя внутри замыкания, но есть ли причина, по которой метка не создает цикл удержания? Я протестировал комментирование testClosure ...
6 месяцев, 3 недели назад jo1717a
70
голосов
1
ответ
Я читал больше о сохранении циклов весь день, и я начинаю путать себя. Поэтому я просто хотел проверить пару вещей. (Только для уточнения, я использую ARC) Итак, скажем, у меня есть MyFirstClass . ...
6 месяцев, 3 недели назад Dom Chapman
79
голосов
1
ответ
У меня возникли проблемы с уничтожением viewcontrollers из-за того, что я считаю циклом сохранения между viewview и viewcontroller. Я попытался сделать collectionview слабой переменной, но теперь я...
6 месяцев, 3 недели назад Blue
81
голос
3
ответа
например, у меня есть класс, у которого есть счетчик удержания и метод выпуска, который может удалить self, если счетчик удержания равен 0: class MyClass{ public: void retain(){ this->retainCoun...
6 месяцев, 3 недели назад ggrr
58
голосов
2
ответа
Я разбираю данные из XML файла и считаю, что нашел цикл сохранения. У меня нет лучшего понимания, как это исправить. Короче говоря, я разбираю кучу поплавков внутри блока, что приводит к тому, что ...
6 месяцев, 3 недели назад kschins
57
голосов
1
ответ
Я думаю, что у меня есть цикл удержания. Это происходит, когда я выдвигаю и отклоняю ВК. Каждый раз, когда я нажимаю и увольняю, подобные объекты накапливаются. Может кто-то помочь мне понять этот ...
6 месяцев, 3 недели назад Emin Israfil iOS
81
голос
1
ответ
Я делаю цикл сохранения, но при профилировании инструменты, похоже, не могут найти этот заманчивый цикл сохранения во-первых, ViewController сохранит SubViewController как свойство subVC и будет ус...
6 месяцев, 3 недели назад ximmyxiao
57
голосов
2
ответа
У меня есть родительский UIView и UITextView как одно из подзонов. И я создал кнопку, чтобы UIView родительский UIView следующим образом: -(void)cancelButtonPressed:(UIButton *)sender { [UIView ani...
6 месяцев, 3 недели назад Boris
105
голосов
0
ответов
Это анти-паттерн иметь следующий код? Я хочу иметь синглтон (ClassB) в качестве переменной, чтобы у меня была какая-то инъекция зависимостей при использовании синглтона. Но мне намекают, что без сл...
1 год, 9 месяцев назад Apostolos Apostolidis
57
голосов
2
ответа
почему он работает, когда мы передаем слабую ссылку на сильную ссылку внутри блока? Если локальная переменная в блоке сохраняется, это должно добавить сохранение к self и, таким образом, создать эт...
5 лет, 10 месяцев назад Paul
79
голосов
1
ответ
Я просто хочу знать, правильно ли я это понимаю или нет. Поэтому в соответствии с документами apple, когда вы создаете закрытие как свойство экземпляра класса, и что ссылки замыкания self (класс, с...
2 года, 4 месяца назад Esko918
80
голосов
0
ответов
При попытке уволить root view controller; Этот код работает в других функциях, но не в функции, которая вызывается уведомлением UIApplicationWillTerminate. let appDel = UIApplication.shared.delegat...
1 год, 9 месяцев назад Orkun Gökalp
70
голосов
2
ответа
У меня проблемы с отслеживанием цикла удержания. Я думаю, что это связано с тем, как я подписываюсь на события. Псевдо код выглядит следующим образом: override func viewDidLoad() { func handleEvent...
2 года, 9 месяцев назад Roland Rabien
113
голосов
1
ответ
У меня есть эта иерархия представлений RouterDashboardViewController: RootViewController RootViewController: UIViewController В настоящее время экземпляр RouterDashboardViewController находится в с...
2 года, 4 месяца назад Sumit Dhariwal
112
голосов
1
ответ
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CheckoutCell") as! CheckoutCell let pro...
3 года, 3 месяца назад Hoang Trung
79
голосов
1
ответ
TL; DR У меня есть структура и класс. Структура имеет ссылку на экземпляр класса, а объект имеет замыкание, которое захватывает структуру. Если ссылка на объект неизвестна, кажется, что они оба деи...
1 год, 11 месяцев назад bursyllac
57
голосов
2
ответа
Я новичок в dispatch_queue и столкнулся с проблемой, пытающейся сохранить в CoreData в фоновом режиме. Я прочитал руководство по программированию CoreData, и я создаю отдельный NSManagedObjectConte...
6 лет, 9 месяцев назад kev
69
голосов
2
ответа
Я видел решение для предотвращения циклов сохранения блоков здесь Но у меня возникают проблемы, когда я обдумываю, почему и даже как это работает. В этом примере делается небольшая самооценка и дей...
6 лет, 2 месяца назад DerrickHo328
127
голосов
3
ответа
Я никогда не работал над проектом, не основанным на ARC. Я просто наткнулся на зомби в моем проекте на базе ARC. Я нашел, что это было из-за сохранения цикла. Мне просто интересно, что такое цикл с...
7 лет, 11 месяцев назад Raj
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема