2010-01-06 74 views
2

我創建了一個輸出「hello world」的簡單命令行工具。這是在main()函數中完成的。Cocoa中的命令行工具

在一個單獨的應用程序中,我可以在hello world工具的輸出中創建一個NSTask管道,併成功使用它。我需要我的命令行工具來做,但是,每秒輸出一些東西(我簡化了這一點)。在其他地方我用NSTimer沒有問題,但在main()函數中創建一個NSTimer不會讓我把'self'設置爲目標(我猜是因爲它不是一個對象)?

這是什麼結構的正確方法?該工具每秒只需輸出「hello world」,直到進程停止(由作爲NSTask啓動它的應用程序)?

回答

2

sleep()功能呢?

int main(...) { 
    while(1) { 
    printf("Hello world!\n"); 
    sleep(1); 
    } 
    return 0; 
} 
+0

我想過 - 這樣做會是一個好方法嗎?只是循環休眠命令,直到進程終止?也許我剛剛花了太多時間在腦海中,忘記了簡單的解決方案。 我該如何使用main之外的另一個函數調用來替換printf語句,以及我將該函數放在哪裏?直接在main()之下?不知道語法,或者在哪裏看 - 這種感覺更像是C編程,而不是OO,這很好,但從大學以來我就沒有做過這些事情! – 2010-01-06 21:56:44

+0

您正在使用Objective-C,因此創建一個對象,將其頭文件導入到'main.m'中,並使用'[[YourObject alloc] init]'在main()中實例化它。然後,您可以像在任何可可應用中一樣使用它。確保你有一個autorelease池,或者你已經調用了'objc_startCollectorThread()'如果你想要這個工具被垃圾回收。 – 2010-01-07 00:42:15

+0

精彩 - 正在運行 - 謝謝! – 2010-01-07 00:50:46

0

我的方法是創建一個類(單獨或在main.m文件中)。要做到這一點,寫(下#進口語句)

@interface TimerClass:NSObject的

/*類的方法,使 「+」 號*/+(無效)callFunction;

@end

然後

@implementation TimerClass

。 +(無效)timerRespond:(*的NSTimer)aTimer {

//調用你的命令行工具

}

,並在主函數,調用的NSTimer並使其有一個時間間隔爲1並調用TimerClass類的timerRespond。

這應該工作正常(可能有一些錯誤,因爲我沒有檢查Xcode)。告訴我它是否有效。祝你好運!