代码问题 - 初学者

时间:2010-10-02 03:21:42

标签: objective-c variables implementation instances

好的,这是我目前的代码:

@implementation PtyView

- (id)initWithFrame:(NSRect)frame;
{
    if (self = [super initWithFrame: frame])
    {
        [self setFont:[NSFont fontWithName:@"Courier" size:0.0]];
        [self startTask];
    }
    return self;
}

- (void)keyDown:(NSEvent *)event
{
    const char * typein = [[event characters] UTF8String];
    [masterHandle
     writeData:[NSData dataWithBytes:typein length:strlen(typein)]];
}
...
@end

问题是我想从另一个实现中触发“startTask”但是,如果我只是“startTask”它将不显示输出,因为我没有使用initWithFrame。

我该怎么做?

谢谢, 利亚

2 个答案:

答案 0 :(得分:0)

如果你想在没有先创建PtyView实例的情况下从其他地方调用startTask,那么startTask必须是静态方法,而不是实例方法。

将它放在你的@interface中:

+ (void)startTask;

将它放在@implementation

+ (void)startTask
{
    // Code goes here
}

想要打电话时放这个:

[PtyView startTask];

注意: +表示它是一种静态方法。 您无法从静态方法访问实例变量。

答案 1 :(得分:0)

嗯,我想,您正在为您的(版本)PseudoTTY.app(http://amath.colorado.edu/pub/mac/programs/PseudoTTY.zip)寻找AMShellWrapperTest.app中的“执行”按钮。正确?