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」をトリガーしたいということですが、initWithFrame を使用しなかったため、「startTask」だけでは出力が表示されません。

どうすればいいですか?

ありがとう、エリヤ

4

2 に答える 2

0

ええと、あなたはあなたの(バージョンの)PseudoTTY.app( http://amath.colorado.edu/pub/mac/programs/PseudoTTY.zip)のためにAMShellWrapperTest.appの「実行」ボタンのようなものを探していると思います。右?

于 2010-10-03T19:29:54.303 に答える
0

最初に PtyView のインスタンスを作成せずに別の場所から startTask を呼び出したい場合、startTask はインスタンス メソッドではなく、静的メソッドである必要があります。

これを @interface に入れてください:

+ (void)startTask;

これを @implementation に入れてください

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

呼び出したいときはこれを入れてください:

[PtyView startTask];

注: + は、静的メソッドであることを意味します。静的メソッドからインスタンス変数にアクセスすることはできません。

于 2010-10-03T15:13:58.963 に答える