Ios7 NSTimer调用使用块的函数。此块在self上调用方法。(保留周期)

Ios7 NSTimer调用使用块的函数。此块在self上调用方法。(保留周期),ios7,objective-c-blocks,nstimer,Ios7,Objective C Blocks,Nstimer,我正在使用NSTimer调用一个函数,该函数每秒刷新一次表视图数据。 此函数使用对web服务的基于块的网络调用。我在使用弱引用来表示NSTimer和self。 视图消失后,Still self未被解除分配。这个函数每秒钟都被调用一次 __weak NSTimer *timer; __weak id weakSelf = self; timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:weakSelf selector:@sele

我正在使用NSTimer调用一个函数,该函数每秒刷新一次表视图数据。 此函数使用对web服务的基于块的网络调用。我在使用弱引用来表示NSTimer和self。 视图消失后,Still self未被解除分配。这个函数每秒钟都被调用一次

__weak NSTimer *timer;
 __weak id weakSelf = self;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:weakSelf selector:@selector(loadData) userInfo:nil repeats:YES];

- (void)loadData{
    MessageDataController *uDC = [MessageDataController new];

    __weak ChatViewController *weakSelf = self;

    [uDC messagesForUser:self.userID WithSuccess:^(NSArray *someMessages) {

            [weakSelf loadBubbleData];

    } failure:^(NSError *error) {

        [MBProgressHUD hideAllHUDsForView:weakSelf.view animated:YES];
    }];
}

如何实现此功能。提前感谢。

在删除视图的代码中使计时器无效

它是一个视图控制器,它会被自己移除。无论是通过按下导航栏的后退按钮,还是通过iOS 7的滑动手势,似乎都是一个很好的选择。viewDidMoveToSuperview或ViewDidMoveToIndow?当两种方法中的任何一个属性都为nil时,您已移出视图层次结构。我不明白您为什么在此处使用
weakSelf
——似乎
self
没有保留我试图在
dealloc
方法中添加断点的块。我注意到,当我按下导航栏中的后退按钮时,
dealloc
不会被调用。如果我拆下计时器。然后调用
dealloc