У меня есть протокол делегирования, затем объект, в котором у меня есть массив свойств, и я могу получить доступ к этому объекту и его массиву из целого приложения ... но мне это не очень нравится.Это правильный / лучший / самый простой способ сделать это?
Делегирование - это правильный шаблон для использования здесь, но вы описываете не столько делегирование, сколько использование глобальной переменной.Возможно, вы храните глобальные переменные в вашем делегате приложения - обычно это то, чего вы можете избежать, если можете.
Вот примерное описание того, как должен выглядеть код:
SecondViewController.h:
@protocol SecondViewControllerDelegate;
@interface SecondViewController;
SecondViewController : UIViewController
{
id<SecondViewControllerDelegate> delegate;
NSArray* someArray;
}
@property (nonatomic, assign) id<SecondViewControllerDelegate> delegate;
@property (nonatomic, retain) NSArray* someArray;
@end
@protocol SecondViewControllerDelegate
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController;
@end
SecondViewController.m:
@implementation SecondViewController
@synthesize delegate;
@synthesize someArray;
- (void)dealloc
{
[someArray release];
[super dealloc];
}
- (void)someMethodCalledWhenUserIsDone
{
[delegate secondViewControllerDidFinish:self];
}
FirstViewController.h:
#import SecondViewController
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
{
...
}
@end
FirstViewController.m:
@implementation FirstViewController
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController
{
NSArray* someArray = secondViewController.someArray
// Do something with the array
}
@end