objective-c - 使用结构清理绑定(bind)

标签 objective-c cocoa macos struct cocoa-bindings

我有一个模型类,它具有 NSSize 和 NSPoint 实例变量非常有意义。这很可爱。

我正在尝试为此对象创建一个编辑界面。我想绑定(bind)到 size.width 等等。这当然行不通。

解决此问题的最干净、最 Cocoa-y 的解决方案是什么?当然,我可以为我使用的每个结构的各个成员编写单独的访问器,但似乎应该有更好的解决方案。

最佳答案

您不必为所有成员创建单独的访问器,您可以只为您关心的类型创建包装器,例如:

@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

关于objective-c - 使用结构清理绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754503/

相关文章:

objective-c - UILabel attributedText 和 minimumScaleFactor

objective-c - 在文本容器插图中无法选择 NSTextView

macos - 奇怪的 Android 模拟器和 Mac 的点击灵敏度问题

objective-c - 将未知行数添加到 'Static Cells' UITableView

objective-c - Objective-C 中的异步初始化

ios - 如何每天显示一次警报

objective-c - 如果我从菜单中调用它,为什么 mainWindow 为空?

c# - 使用 C# 和 Xamarin 防止按 F8(播放)按钮后启动 iTunes/Music.app

macos - 始终在非视网膜显示屏上使用的图像的视网膜版本

mysql - 在 OS X 上设置 MySQL 5.7.9 root 用户密码