Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用NSImageView?_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c 使用NSImageView?

Objective c 使用NSImageView?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我已经创建了一个从NSImageView派生的类。但是,没有调用类的构造函数(init),因此我猜init不是NSImageView的正确初始值设定项 NSImageView的正确初始值设定项是什么?我签出了,但他们似乎没有提到正确的init函数。谷歌搜索似乎也没有提供任何具体的信息 我找到了一个可能的构造函数: -(id)initWithFrame:(NSRect)frameRect 但我不确定这是否是正确的电话。我不太确定frameRect是什么 NSImageView的默认初始值设定项/构

我已经创建了一个从NSImageView派生的类。但是,没有调用类的构造函数(init),因此我猜init不是NSImageView的正确初始值设定项

NSImageView的正确初始值设定项是什么?我签出了,但他们似乎没有提到正确的init函数。谷歌搜索似乎也没有提供任何具体的信息

我找到了一个可能的构造函数:

-(id)initWithFrame:(NSRect)frameRect

但我不确定这是否是正确的电话。我不太确定frameRect是什么


NSImageView的默认初始值设定项/构造函数是什么?注意,我正在开发一个桌面应用程序,而不是一个iOS应用程序,如果这有区别的话。NSImageView子类对象是通过Interface Builder放置在窗口中的,而不是以编程方式

如果它来自nib/xib,则initWithCoder:

-(id)initWithCoder:(NSCoder *)coder

如果它来自nib/xib,则initWithCoder:

-(id)initWithCoder:(NSCoder *)coder

NSView
派生的类可以使用
initWithFrame
以编程方式初始化,或者使用
awakeFromNib
从NIB文件加载时初始化。我所做的是调用一个公共的、私有的方法来执行初始化,而不管它们是如何加载的:

// Private methods
@interface MyViewSubclass ()

- (void)_setupView;

@end

@implementation MyViewSubclass

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

- (void)awakeFromNib
{
    [self _setupView];
}

// Common initialisation (called by initWithFrame: and awakeFromNib).
- (void)_setupView
{
    // Set stuff up
}

NSView
派生的类可以使用
initWithFrame
以编程方式初始化,或者使用
awakeFromNib
从NIB文件加载时初始化。我所做的是调用一个公共的、私有的方法来执行初始化,而不管它们是如何加载的:

// Private methods
@interface MyViewSubclass ()

- (void)_setupView;

@end

@implementation MyViewSubclass

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

- (void)awakeFromNib
{
    [self _setupView];
}

// Common initialisation (called by initWithFrame: and awakeFromNib).
- (void)_setupView
{
    // Set stuff up
}

你所说的“如果它来自一个笔尖/锡伯”是什么意思?看看@Riddler(和+1)给他的答案。NSImageViews可以在用户界面(xib或nib)文件中创建,也可以通过编程方式创建。我只是用一个通用的NSView子类尝试了它,在10.7上为我调用了initWithFrame,但没有调用initWithCoder。不知道为什么-我知道在过去,我们必须在某些事情上覆盖initWithCoder,尽管awakeFromNib被更频繁地使用。@EricS initWithCoder似乎在我的机器上工作得很好,谢谢!是的,当我尝试NSImageView子类而不是直接NSView子类时,它在这里也起作用。电脑有时很奇怪。你说的“如果是从一个笔尖/锡伯”是什么意思?看看@Riddler(和+1)给他的答案。NSImageViews可以在用户界面(xib或nib)文件中创建,也可以通过编程方式创建。我只是用一个通用的NSView子类尝试了它,在10.7上为我调用了initWithFrame,但没有调用initWithCoder。不知道为什么-我知道在过去,我们必须在某些事情上覆盖initWithCoder,尽管awakeFromNib被更频繁地使用。@EricS initWithCoder似乎在我的机器上工作得很好,谢谢!是的,当我尝试NSImageView子类而不是直接NSView子类时,它在这里也起作用。电脑有时很奇怪。