Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Isfet
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 4
#1

Не вызывается dealloc в UIViewController при popViewControllerAnimated - Objective-C

27.02.2016, 15:03. Просмотров 365. Ответов 2
Метки нет (Все метки)

Здравствуйте! есть такой код

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@interface MainController ()
 
@property (strong,nonatomic) Model *model;
@property (strong,nonatomic) NSString *addingNoteText;
@property (strong,nonatomic) NotesList *notesList;
 
 
@end
 
@implementation MainController
 
-(id) init
{
    self = [super initWithRootViewController:[self createRootController]];
    self.model = [[Model alloc] init];
    
  
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(noteAdded:) name:@"add_entry_loaded" object:nil];
    return self;
}
 
-(void) noteAdded:(NSNotification *)notification
{
    NSLog(@"NOTE ADDED");
 
    //[self popViewControllerAnimated:YES];  // ( 2 )
}
 
-(NotesList *) createRootController
{
    self.notesList = [[NotesList alloc] initWithModel:self.model];
    
    __weak MainController *weakSelf = self;
    
    self.notesList.addNoteBlock = ^{
 
        AddNoteController *addNoteController = [[AddNoteController alloc] init];
        addNoteController.addNoteBlock = ^(NoteModel *noteModel){
            
            weakSelf.addingNoteText = noteModel.text;
            [weakSelf.model addNote:noteModel.text];
            [weakSelf popToViewController:weakSelf.notesList animated:YES];  // ( 1 )
        };
        [weakSelf pushViewController:addNoteController animated:YES];
    };
   
    self.notesList.detailNoteBlock = ^(NoteModel *noteModel){
        
        DetailNoteController *detailController = [[DetailNoteController alloc] initWithNoteModel:noteModel];
       [weakSelf pushViewController:detailController animated:YES];
    };
    
    return self.notesList;
}
 
- (void)viewDidLoad {
    [super viewDidLoad];
}
-(void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
-(void) dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
суть его в том что мы имеем NavigationController с кнопкой "добавить" в навбаре , при нажатию на которую переходим на AddNoteController (в нем есть текстовое поле и кнопка сохранить, при нажатии на которую запись сохраняется в rootViewController - здесь это NotesList) . Если [self popViewControllerAnimated:YES]; вызывается из блока (2), то Контроллер навигации переходит на Рутовый контроллер а у AddNoteController вызывается Dealloc , но если нам нужно подождать пока придет ответ с сервера, что запись сохранена(строка (1)), то после вызова [self popViewControllerAnimated:YES]; вызов dealloc не происходит, подскажите пожалуйста чем это может быть вызвано вроде нигде нет retain- циклов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2016, 15:03     Не вызывается dealloc в UIViewController при popViewControllerAnimated
Посмотрите здесь:
Objective-C dealloc
Objective-C Прозрачный UIViewController
Objective-C Состояние UIViewController
Objective-C Метод touchesBegan в UIViewController
Обмен свойствами двух UIViewController посредством KVO Objective-C
C++ При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Окно настройки принтера не вызывается через меню, но вызывается по кнопке Delphi
UIViewController поверх
UISplitViewController vs UIViewController
обращение к данным uiviewcontroller
PHP не вызывается функция при Onclick();
XCode: Связь двух UIViewController

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
residentkms
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
Завершенные тесты: 1
27.02.2016, 17:22     Не вызывается dealloc в UIViewController при popViewControllerAnimated #2
разве не правильнее использовать viewWillDisappear: ?
Isfet
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 4
27.02.2016, 18:29  [ТС]     Не вызывается dealloc в UIViewController при popViewControllerAnimated #3
так ни viewWillDisappear ни viewDidDisappear ни Dealloc не вызываются, а в инструментах смотрю там AddNoteController в памяти висит, как будто где-то ссылка на него не обнулилась, но ссылка есть только в блоке.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru