一次向多个对象发送消息(objective-c)

时间:2010-07-01 14:16:56

标签: iphone objective-c object messaging

(或设置多个具有一个值的对象) 有没有办法在一行中发送一个消息的多个对象。

所以喜欢

[someObject, otherObject reset];
像在LUA脚本(我相信是C?)中你可以设置多个对象:

someThing, otherThing = 1 , 0

4 个答案:

答案 0 :(得分:3)

简而言之,不,Objective-C和C都不支持此功能。作为极端衡量标准,您可以使用-[NSArray makeObjectsPerformSelector:]-[NSArray makeObjectsPerformSelector:withObject:],例如

[[NSArray arrayWithObjects:someObject, otherObject, nil] makeObjectsPerformSelector:@selector(reset)];

答案 1 :(得分:2)

我可能会使用NSNotification。

您需要将这些对象订阅到您的通知并发送。这两个对象都将收到通知。

例如,如果您的对象是ViewControllers,则可以将此位添加到其viewDidLoad方法中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reset:) name:@"reset" object:nil];

metod重置:必须采用以下形式:

- (void)reset:(NSNotification *)theNotification;

然后,当您要将消息发送到所有这些对象时,您会发布通知。

NSDictionary *messages = [NSDictionary dictionaryWithObjectsAndKeys:@"hello", @"object 1", @"bye", @"object2", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"reset" object:message];

因此每个对象都将收到字典消息并执行方法重置。

为了将该方法用作字典,您必须从通知中获取对象。

NSDictionary *receivedMessage = [theNotification object];

另外,不要忘记从通知中心删除这些对象。我在他们的dealloc方法中使用这个位:

[[NSNotificationCenter defaultCenter] removeObserver:self];

答案 2 :(得分:1)

NSArray中有几种方法可以帮助解决这个问题:

  • (无效)makeObjectsPerformSelector:(SEL)aSelector

  • (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject

答案 3 :(得分:0)

不是真的。这是Lua(NOT LUA)和Matlab的特色之一。

您可以考虑使用NSNotificationCenter并以这种方式向多个对象发送消息,但这样做更有效。