【问题标题】:Explaining apples documentation解释苹果文档
【发布时间】:2014-01-08 05:11:34
【问题描述】:

我试图理解该方法的这两个参数,但我似乎不理解它。 addObserverForName:object:queue:usingBlock:

方法中的2个参数的描述我没看懂。希望有人能给我解释一下。

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block

我不明白这 2 行:

姓名 注册观察者的通知名称;也就是说,只有具有此名称的通知用于将块添加到操作队列。 如果传递 nil,通知中心不会使用通知的名称来决定是否将块添加到操作队列中。

通知中心在nilled时不使用通知名称来决定是否向操作队列添加block是什么意思。 另外,我应该输入什么通知名称。我不知道。 和

对象 要将块添加到操作队列的通知的对象。 如果传递 nil,通知中心不会使用通知的发送者来决定是否将块添加到操作队列中。

我应该在这个参数中插入什么对象。

【问题讨论】:

    标签: ios objective-c block


    【解决方案1】:

    无名称和有效对象 - 来自该对象的所有通知都将传递给块。

    有效名称和 nil 对象,任何对象的该名称的所有通知都将传递给块。

    有效名称和有效对象 - 该对象的该名称通知将传递给块。

    通知的名称取决于您要观察的通知,我们无法从您的问题描述中告诉您使用什么。

    【讨论】:

      【解决方案2】:

      name 参数描述的文档听起来像是从对象描述中复制并粘贴的。

      通知以字符串通知名称发送:

      [[NSNotificationCenter defaultCenter] postNotificationName: @"somethingHappened" 
        object: self];
      

      通常但并非总是如此,发布通知调用中的“对象”是发布通知的对象。它也可能是通知所涉及的对象:

      [[NSNotificationCenter defaultCenter] postNotificationName: @"aHouseCaughtFire" 
        object: theHouseThatCaughtFire];
      

      该发布通知调用发送一条消息(例如“aHouseCaughtFire”),并且对象参数告诉该事件与哪个对象相关联。

      当您注册通知时,您可以说您关心特定的通知字符串(名称)、特定对象或两者。正如另一位发帖人所说,如果您传入一个 nil 通知名称和一个非 nil 对象,您将收到有关使用您指定的对象参数发送的所有通知的通知。

      如果您要去度假,您可能想要注册有关您的房子的所有通知。 (通知 = 无,对象 = 你的房子。)

      因此,您会收到关于您的房子的“aHouseCaughtFire”通知、“aHouseWasRobbed”通知和“aHouseGotaAPackage”通知,但不会收到关于其他房子的通知。

      如果您是消防部门,您可能希望注册所有“aHouseCaughtFire”通知,无论它是哪所房子。然后通知处理程序会查找特定房屋的地址,并派出消防车。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-28
        • 1970-01-01
        相关资源
        最近更新 更多