2010-10-02 2 views
0

Ok вот мой код до сих пор:код - начинающий

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

Как мне это сделать?

Спасибо, Илия

+0

Тот же пользователь, такой же вопрос, как [создание экземпляров в объективе c] (http://stackoverflow.com/questions/3839611/creating-instances-in-objective-c) – Chuck

+0

nope, другой вопрос в той же теме слегка: D – objectiveccoder001

ответ

0

Если вы хотите позвонить startTask из другого без создания экземпляра PtyView то startTask должен быть статический метод, а не метод экземпляра.

Поместите это в @interface:

+ (void)startTask; 

Поместите это в @implementation

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

Надень это, когда вы хотите назвать это:

[PtyView startTask]; 

Примечания: Значение + означает, что это статический метод. Вы не можете получить доступ к переменным экземпляра из статического метода.

+0

Да, но вижу мою проблему? У меня есть initWithFrame, который запускает задачу при запуске программы. Я хочу начать спрашивать где-то еще в моем коде. НО, я не могу, потому что без init-кадра задача не будет выводить результат. Есть идеи? – objectiveccoder001

+0

Вам не ясно, что вы хотите сделать. Похоже, вам может понадобиться синглтон, но это только предположение. – jhabbott

+0

Ну, а не initWithFrame, начиная с момента запуска программы, может ли он быть полезным? Что вы подразумеваете под синглом? вы можете показать пример? – objectiveccoder001

0

Ну, я думаю, вы ищете что-то вроде кнопки «Выполнение» в AMShellWrapperTest.app для вашей (версии) PseudoTTY.app (http://amath.colorado.edu/pub/mac/programs/PseudoTTY.zip). Правильно?

+0

в принципе, да: D BUT, мне нужно отправить данные в текущую задачу, я не могу это сделать с AMshellWrapper. Есть идеи? – objectiveccoder001

Смежные вопросы