代码之家  ›  专栏  ›  技术社区  ›  rickharrison

检查协议响应的安全方法是什么

  •  2
  • rickharrison  · 技术社区  · 15 年前

    下面是一个场景:

    视图控制器将新控制器推送到导航控制器。此子控制器创建使用nsurlconnection的模型。此连接完成后,将进行如下调用:

    [self.delegate modelDidFinishParsing:self];
    

    生成此代码的安全方法是什么?现在,我有了这个代码,它在某种情况下崩溃了:

    if ([self.delegate conformsToProtocol:@protocol(ModelDelegate)]) [self.delegate modelDidFinishParsing:self];
    

    崩溃的情况是,拥有模型的视图控制器在模型完成之前从堆栈中弹出。我应该让模型成为一个IVAR以便控制器自己释放它吗 - (void)dealloc ?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tom Irving    15 年前

    在您的支票中,您可以确保代理人没有 nil

    if (self.delegate && [self.delegate conformsToProtocol...]) [self.delegate modelDidFinishParsing:self];