我有一个根据用户输入修改的布尔数组(soundArray)。因此,它归用户正在与之交互的主 UIView 所有。同时,在另一个单独的控制器 (GestureController) 中,我需要访问这个 soundArray,所以我可以将它作为方法调用中的参数传递。
我很确定 ViewController 不应该挖掘它不拥有的 UIView 的属性(正确的 MVC),所以我在拥有主 UIView(MusicGridView)的 ViewController(MusicGridController)中创建了另一个指向 soundArray 的指针)。
在 GestureController 中,我有以下代码:
// instantiate the sound thread
NSArray *soundArrayPointers = [NSArray arrayWithObjects:self.musicGridViewController.soundArray, nil];
[NSThread detachNewThreadSelector:@selector(metronome:) toTarget:[MusicThread class] withObject:soundArrayPointers];
(最终我将在该数组中有更多 soundArrays)。
现在,在 MusicGridController 中,我需要在 UIView MusicGridView 中设置指向 SoundArray 的指针......所以我这样做了:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.frame = CGRectMake(20, 0, 480, 480);
MusicGridView *tempview = self.view; // this line gives me a warning that I am initializing from a distinct Objective-C type, which I don't understand.
self.soundArray = tempview.soundArray;
}
我尝试了 self.soundArray = self.view.soundArray,但它抛出了一个错误,我不明白为什么。所以我的问题是:这是一个正确的实现吗?如何从一个 viewController 获取给定 UIView 的属性?