【问题标题】:code problem - beginner代码问题 - 初学者
【发布时间】:2010-10-02 03:21:42
【问题描述】:

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

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

我该怎么做?

谢谢, 以利亚

【问题讨论】:

标签: objective-c variables implementation instances


【解决方案1】:

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

把它放在你的@interface:

+ (void)startTask;

把它放在你的@implementation中

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

当你想调用它时把它放在:

[PtyView startTask];

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

【讨论】:

  • 是的,但是看到我的问题了吗?我有 initWithFrame 在程序启动时启动任务。我想在我的代码中的其他地方开始询问。但是,我不能,因为没有初始化帧,任务将不会打印输出。有什么想法吗?
  • 你并不清楚你想做什么。听起来你可能想要一个单例,但这只是一个猜测。
  • 好吧,而不是在程序启动时启动initWithFrame,它可以被调用吗?你说的单例是什么意思?你能举个例子吗?
【解决方案2】:

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

【讨论】:

  • 基本上,是的:D 但是,我需要将数据发送到正在运行的任务,我不能用 AMshellWrapper 来做到这一点。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2020-01-04
  • 2020-11-23
  • 2015-03-16
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多