0

好的,到目前为止,这是我的代码:

@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。

我该怎么做?

谢谢,以利亚

4

2 回答 2

0

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

把它放在你的@interface中:

+ (void)startTask;

把它放在你的@implementation

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

当你想调用它时放这个:

[PtyView startTask];

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

于 2010-10-03T15:13:58.963 回答
0

好吧,我认为,您正在为您的(版本)PseudoTTY.app( http://amath.colorado.edu/pub/mac/programs/PseudoTTY.zip)寻找类似 AMShellWrapperTest.app 中的“执行”按钮. 对?

于 2010-10-03T19:29:54.303 回答