为什么可以';t对象在ios中具有委托列表

为什么可以';t对象在ios中具有委托列表,ios,delegates,Ios,Delegates,在iOS中,是什么阻止我拥有对象的委托列表?我知道你不应该这样做,但我不明白这是否只是因为它不符合委托模式,或者这样做是否存在一些真正的技术问题。我将用一个例子来解释我所指的内容: 协议: @protocol MyDelegate <NSObject> - (void) someMethod; @end @协议MyDelegate -(无效)某种方法; @结束 类标题: @interface SomeClass : NSObject // Correct use of de

在iOS中,是什么阻止我拥有对象的委托列表?我知道你不应该这样做,但我不明白这是否只是因为它不符合委托模式,或者这样做是否存在一些真正的技术问题。我将用一个例子来解释我所指的内容:

协议:

@protocol MyDelegate <NSObject>

- (void) someMethod;

@end
@协议MyDelegate
-(无效)某种方法;
@结束
类标题:

@interface SomeClass : NSObject

// Correct use of delegate pattern 
@property (nonatomic, weak) id<MyDelegate> delegate;
// Incorrect use of delegate pattern
@property (nonatomic, strong) NSArray<id<MyDelegate>> delegates;

@end
@接口SomeClass:NSObject
//委托模式的正确使用
@属性(非原子,弱)id委托;
//委托模式的错误使用
@属性(非原子、强)NSArray委托;
@结束
类实现:

@implementation SomeClass 

// Correct use of delegate pattern
- (void) someMethodThatCallsDelegate {

    ...

    [_delegate someMethod];
}

// Incorrect use of delegate pattern
- (void) someMethodThatCallsDelegate {

    ...

    for(id<MyDelegate> delegate in _delegates) {
        [delegate someMethod];
    }
}

@end
@实现类
//委托模式的正确使用
-(void)调用Legate的某些方法{
...
[_代表某种方法];
}
//委托模式的错误使用
-(void)调用Legate的某些方法{
...
for(id代表在_代表中){
[委托方法];
}
}
@结束
在我自己的项目中,我经常发现自己处于这样一种情况:几个对象想要知道某个事件。通常在网络类中。在这些情况下,我只使用
NSNotificationCenter
,但我总是喜欢为对象创建一个委托列表(因为我也是一名Android程序员,在这里,一组侦听器是完全正常的)。那么,没有代表名单的原因是什么


(我也知道,在许多情况下,一个对象有多个委托是一种糟糕的设计,但我要说的是在没有委托的情况下,例如在网络代码中)

没有什么可以阻止您这样做。事实上,这可能是我使用协议的原因,而不仅仅是用于代表等

但是,我会考虑你所说的对象和协议

委托
是您的主要对象“委托”工作的对象。例如,表视图知道它必须有许多行、节等。。。但不是计算这些,而是说“我的代表将为我做这项工作”。然后,它允许同一个tableview与任何委托进行交互

您的对象显然不是这样的,因为它们有很多。它们可能都有一些共同的用法。那是什么用法?delegate这个词用得对吗


如果他们都是“听众”然后,用一个函数调用协议
监听器
“someListenedToActionWasTriggered”,调用数组
监听器

会更有意义。从你的回答中,我刚刚了解到授权更多的是指让其他类为你做一些工作或决定一些事情,而不是通知你发生了什么事。我想你只是弥补了我知识上的一个漏洞。非常感谢。