我在Objective C中传递参数时遇到问题。这是我的情况:
我有一个根控制器(主屏幕)。在它的视图中有一个ScrollView,它包含3个视图(接下来的3个控制器)。您可以水平滚动它,并且ScrollView中的这3个视图正在发生变化。接下来我有一个与某些硬件通信的对象。有一个会话和输入/输出流。此对象接收一些数据,我需要在视图中显示此数据(根视图和滚动视图中的3个视图)。根控制器和这3个控制器有时也会要求一些数据。
这意味着通信对象必须拥有所有控制器的实例才能直接发送数据。但是控制器必须有通信对象的实例才能要求数据。
我想这样做:根控制器为其子视图创建3个控制器(在scrollview中)并显示它们。它还创建通信对象并向这个对象发送这3个控制器(通过ref)。并且还向每个控制器实例发送通信对象。在这种情况下,通信对象可以直接向控制器发送数据,控制器也可以直接询问数据。
通常我使用C#,因此通过ref传递参数不是问题,但似乎在Objective C中它是不可能的。当我想发送引用时,它会创建一个副本并发送它,所以我有两个对象副本,我不想要它。我想引用一个对象。我试图发送一个指针 - (UIViewController **)controller
,但似乎它也不起作用。
你能说出我应该如何解决这个问题吗?接下来的想法是根控制器创建3个子控制器和一个通信对象。此通信对象将向根控制器发送消息,并将此消息转发给右控制器。子控制器将向根控制器发送消息,并将其转发到通信对象。
答案 0 :(得分:0)
如果不明确复制对象,则在Objective-C中通过引用传递:
void addWorld(NSMutableString *stringReference) {
[stringReference appendString:@"world!"];
}
通过引用传递:
NSMutableString *greeting = [NSMutableString stringWithString:@"Hello, "];
addWorld(greeting);
NSLog(@"%@", greeting);
答案 1 :(得分:0)