我正在学习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
答案 0 :(得分:2)
它不会以这种方式工作。 NSTimer需要一个runloop,当您创建一个普通的Cocoa应用程序而不是Foundation命令行工具时,它将自动创建。
如果您在主笔尖中实例化,则在应用程序委托的applicationDidFinishLaunching
方法或对象的init
中创建计时器。