[NSImage setHidden:]: 无法识别的选择器发送到实例

问题描述

macOS Xcode Objective-C。很新,请耐心等待。

使用以下方法以编程方式显示图像:

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        m_imgBack = nil;
}

- (void)drawRect:(NSRect)rect {
    rect = [ self bounds ];
    if( m_imgBack )
      [m_imgBack drawInRect:NSMakeRect(0,rect.size.width,rect.size.height) fromrect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
}

- (void)InitControls {
    LoadImageFromFile( [ Nsstring stringWithFormat:@"%@/common/background.png",DATA_PATHNAME ],&m_imgBack );
}

这可以毫无问题地绘制 background.png。但是,我看不到使用以下方法隐藏它:

[m_imgBack setHidden:YES];

它只是回退错误:[NSImage setHidden:]: unrecognized selector sent to instance。我以为你可以在 NSImage 上设置隐藏?

解决方法

您可以将 NSImage 视为一个数据对象,因此隐藏它没有意义,就像隐藏 NSArrayNSDictionary 没有意义一样。

如果您在视图中显示图像,则可以使用 isHidden 隐藏该视图。从代码片段中不清楚代码属于哪个类,但假设它是 NSView 的子类,您可以尝试 [self setHidden:YES]