#objective-c #cocoa #macos #struct #cocoa-bindings
#objective-c #cocoa #macos #структура #cocoa-привязки
Вопрос:
У меня есть класс модели, для которого имеет смысл иметь переменные экземпляра NSSize и NSPoint. Это прекрасно.
Я пытаюсь создать интерфейс редактирования для этого объекта. Я бы хотел привязаться к size.width
и еще много к чему. Это, конечно, не работает.
Какое самое чистое, наиболее приемлемое для Cocoa решение этой проблемы? Конечно, я мог бы написать отдельные средства доступа для отдельных членов каждой используемой мной структуры, но, похоже, должно быть лучшее решение.
Ответ №1:
Вам не нужно создавать отдельные средства доступа для всех элементов, вы могли бы просто создать оболочки для интересующих вас типов, например:
@interface SizeWrapper : NSObject {
CGFloat width, height;
}
@property (readwrite) CGFloat width, height;
- (id)initWithSize:(NSSize)sz;
- (NSSize)sizeValue;
@end
@implementation SizeWrapper
@synthesize width, height;
- (id)initWithSize:(NSSize)sz {
if (self = [super init]) {
width = sz.width;
height = sz.height;
}
return self;
}
- (NSSize)sizeValue {
return NSMakeSize(width, height);
}
@end
Комментарии:
1. Это интересно, но я не уверен, как применить это к привязке текстового поля. Разве мне все равно не нужно было бы писать средства доступа?
2. @andyvn22: Удалил эту часть, поскольку оставалось бы еще немного работы.
3. Это все еще расстраивает меня (зачем тогда CGFloat!?) но я полагаю, что этого хватит.
4. @alex: Это довольно прямолинейно — добавил это выше.