简单的NSTimer测试不起作用

时间:2011-11-08 11:06:42

标签: objective-c

我正在学习NSTimer,在阅读了Docs后,我做了这个简单的测试。我的理解是,当我在main中调用viewDidLoad时,viewDidLoad应该在3.0秒后调用runTest - 但它不起作用。它编译好没有错误但不会加载runTest(没有NSLog)请帮助...谢谢。

#import "MyClass.h"
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

MyClass *trial = [[MyClass alloc]init];

[trial viewDidLoad]; ///// this should call viewDidLoad /////

[pool drain];
return 0;
}



#import <Foundation/Foundation.h>

@interface MyClass : NSObject {

NSTimer *aTimer;}

@property (nonatomic, retain) NSTimer *aTimer;

- (void)viewDidLoad;

- (void)runTest;

@end





#import "MyClass.h"

@implementation MyClass

@synthesize aTimer;

- (void)viewDidLoad {
    aTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self     selector:@selector(runTest) userInfo:nil repeats:NO];}

- (void) runTest {
NSLog(@"Working - runTest has loaded !");
aTimer = nil;
}
@end

1 个答案:

答案 0 :(得分:2)

它不会以这种方式工作。 NSTimer需要一个runloop,当您创建一个普通的Cocoa应用程序而不是Foundation命令行工具时,它将自动创建。

如果您在主笔尖中实例化,则在应用程序委托的applicationDidFinishLaunching方法或对象的init中创建计时器。