У меня есть массив логических значений (soundArray), который изменяется в зависимости от ввода пользователя. Поэтому он принадлежит основному UIView, с которым взаимодействует пользователь. Между тем, в другом отдельном контроллере (GestureController) мне нужен доступ к этому soundArray, чтобы я мог передать его в качестве параметра при вызове метода.
Я почти уверен, что ViewController не должен выкапывать свойства UIView, которым он не владеет (правильный MVC), поэтому я создал еще один указатель на soundArray в ViewController (MusicGridController), который владеет основным UIView (MusicGridView).
В GestureController у меня есть следующий код:
// instantiate the sound thread
NSArray *soundArrayPointers = [NSArray arrayWithObjects:self.musicGridViewController.soundArray, nil];
[NSThread detachNewThreadSelector:@selector(metronome:) toTarget:[MusicThread class] withObject:soundArrayPointers];
(со временем у меня будет больше массивов звука в этом массиве).
Теперь в MusicGridController мне нужно установить указатель на SoundArray в UIView MusicGridView ... поэтому я сделал это:
- (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?