使用NSImageView?

时间:2012-06-30 20:50:38

标签: objective-c macos cocoa

我创建了一个派生自NSImageView的类。但是,没有调用类的构造函数(init),因此我猜测init不是NSImageView的正确初始化器。

NSImageView的正确初始化程序是什么?我检查了manuals,但他们似乎没有提到正确的init函数。谷歌搜索似乎也没有提供任何具体的results

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

  

- (id)initWithFrame:(NSRect)frameRect

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

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

2 个答案:

答案 0 :(得分:4)

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
}

答案 1 :(得分:1)

如果是来自nib / xib,initWithCoder:

-(id)initWithCoder:(NSCoder *)coder