1

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

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

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

-(id) initWithFrame:(NSRect)frameRect

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

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

4

2 回答 2

4

派生自的类NSView可以使用 以编程方式初始化,也可以initWithFrame在使用awakeFromNib. 我所做的是调用一个通用的、私有的方法来执行初始化,不管它们是如何加载的:

// 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
}
于 2012-06-30T20:59:23.183 回答
1

如果它来自 nib/xib,initWithCoder:

-(id)initWithCoder:(NSCoder *)coder
于 2012-06-30T20:56:20.067 回答