在子类上设置 NSView readonly-属性 标签

Setting NSView readonly-property tag on subclass

我有一个从 NSView 派生的 class。 NSView 有声明

@property (readonly) NSInteger tag;

如何在我的 subclass 中将标签 属性 设置为某个值?我尝试在我的头文件中进行跟踪

@property(readwrite, assign) NSInteger tag;

然后在实现中我有

@dynamic tag
...
- (void)setTag:(NSInteger)newTag
{
    _tag = newTag;
}

这无法编译,我得到“使用未声明的标识符:‘_tag’”。如何将标签设置为值?

我认为您遇到的问题是 _tag 在您尝试设置它的上下文中不存在,但是如果您像这样使用 @synthesize

#import <Cocoa/Cocoa.h>

@interface SOView : NSView

@property (readwrite) NSInteger tag;

@end


@implementation SOView

@synthesize tag = _tag;

- (void)awakeFromNib
{
    self.tag = 25;
}

@end

我在我自己的小测试项目中尝试了这个,它运行得非常好。