(或设置多个具有一个值的对象) 有没有办法在一行中发送一个消息的多个对象。
所以喜欢
[someObject, otherObject reset];
像在LUA脚本(我相信是C?)中你可以设置多个对象:
someThing, otherThing = 1 , 0
答案 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中有几种方法可以帮助解决这个问题:
和
答案 3 :(得分:0)
不是真的。这是Lua(NOT LUA)和Matlab的特色之一。
您可以考虑使用NSNotificationCenter并以这种方式向多个对象发送消息,但这样做更有效。