У меня есть объект, который очень похож на это. Я называю это MBlob, для MediaBlob. Он знает, как делать все что угодно, например, как разделить его на 2, объединить с другим MBlob (изменение размера соответствующим образом на основе формы) и т. Д. Он также знает, как порождать себя в WebView (загрузка URL), получать измененный размер (например, поворот, жесты) и т. д. Очень удобный класс для создания небольших приложений, и я предполагаю, что у многих разработчиков есть нечто подобное. Аналогичный класс используется в приложениях моего магазина приложений, QCount (бесплатно) и QPlus.
Один из способов структурирования объектов, таких как объект, заключается в том, что он является потомком NSObject, а затем подключает некоторые протоколы для встроенных элементов, которые вы хотите использовать. Например, мой интерфейс выглядит так:
@interface MBlob : NSObject <UIWebViewDelegate, UIPopoverControllerDelegate> {
id _delegate;
}
Все свойства реализованы как @synthesize varName = _varName в файле .m.
Тогда вы можете подключить все виды просмотров из этого пункта. Это может быть излишним, но мой MBlob даже знает, как запустить редактор настроек, чтобы редактировать свои собственные настройки, не беспокоясь о собственном VC. Вот немного пищи для размышлений:
@property (nonatomic, strong) UIView* preview;
@property (nonatomic, strong) UIView* displayView;
@property (nonatomic, strong) UIWebView* webView;
@property (nonatomic, strong) UIToolbar* toolbar;
@property (nonatomic, strong) UIActivityIndicatorView* activityIndicator;
@property (nonatomic, strong) NSTimer* timer;
@property (nonatomic, strong) NSString* mediaType;
@property (nonatomic, strong) NSString* mediaValue;
@property (nonatomic) CGFloat aspectRatio; // width:height
@property (nonatomic) BOOL aspectRatioLocked;
@property (nonatomic) CGSize nativeSize;
@property (nonatomic) CGPoint nativeLocation;
@property (nonatomic, strong) NSString* title;
@property (nonatomic, strong) UITextField* titleTextField;
@property (nonatomic, strong) UIFont* font;
@property (nonatomic) BOOL fullScreen;
@property (nonatomic, strong) WebviewButtonPreferences* webviewButtonPreferences;
@property (nonatomic, strong) PreferencesEditorViewController* preferencesEditorVC;
Мое единственное предупреждение в том, что Apple упростила многие вещи с помощью встроенных классов, поэтому не переусердствуйте. Например, в моем коде выше, мне действительно нужен шрифт? Я не знаю, это больше не мой активный код, но это пример объекта, который вы описываете. Если вы добавите больше функциональности, выберите подкласс NSObject и создайте любой другой класс, для которого вы хотите использовать свойство.
Удачи,
Дэмиен