我想了解更多关于objective-c中的线程,所以我做了一个小测试程序,它只会循环并输出它所在的循环迭代。但是,我得到的输出不是我所期望的。我知道为什么,但首先是我的代码:
主文件
#import <Foundation/Foundation.h>
#import "Car.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Car* myCar = [[Car new] autorelease];
[myCar performSelectorInBackground:@selector(LoopAndSay) withObject:nil];
for(int i = 0; i < 100; i++ )
{
NSLog(@"Main loop on %i", i);
}
}
return 0;
}
车
#import "Car.h"
@implementation Car
@synthesize name, model;
-(void) LoopAndSay {
for(int i = 0; i < 100; i++)
{
NSLog(@"Looping for the %i time", i);
}
}
@end
现在,如果我按原样运行它,后台循环有时不会完成(在迭代 94 和 97 之间停止)。此外,如果我切换我的代码,以便在主线程循环之后才调用后台循环,那么它将不会运行任何迭代。这是因为主线程已经完成并且不想等待后台线程运行完成吗?如果是这种情况,有没有办法强制程序继续运行,直到主线程和任何后台线程都完成?