Простой ответ заключается в том, что вам не следует хранить данные модели (массив URL-адресов файлов) в представлении.
Ваше представление должно передать список файлов другому объекту контроллера, который затем сохранит список файлов в каком-либо объекте модели. Вот что такое MVC.
Один из способов сделать это - использовать шаблон делегата, где ваше представление объявит метод протокола примерно так:
@protocol YourViewProtocol
- (void)imageView:(YourImageViewClass*)aView receivedDroppedURLs:(NSArray*)arrayOfURLs;
@end
Ваш взгляд также будет иметь слабое свойство datasource
:
@interface YourImageViewClass : NSImageView
@property (weak) id <YourViewProtocol> datasource;
@end
Затем вы установите объект контроллера в качестве источника данных представления. Контроллер должен соответствовать протоколу и реализовывать его метод:
@interface YourController <YourViewProtocol>
- (void)imageView:(YourImageViewClass*)aView receivedDroppedURLs:(NSArray*)arrayOfURLs;
@end
Затем в методе view, который получает перетаскивание, вы должны сделать что-то вроде:
- (void)receivedDroppedURLs:(NSArray*)urls
{
if([datasource conformsToProtocol:@protocol(YourViewProtocol)])
{
[datasource imageView:self receivedDroppedURLs:urls];
}
}
Другой способ сделать это - через пользовательские привязки. Реализация привязок в пользовательском представлении немного сложнее, и я бы рекомендовал сначала использовать шаблон делегата / источника данных, если вы не являетесь опытным разработчиком Cocoa.