iOS 개발 멀티스레드 – 스레드 생성
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:nil];
[thread start];
// , thread self run
// object run
+ (NSThread *)mainThread; //
- (BOOL)isMainThread; //
+ (BOOL)isMainThread; //
NSThread *current = [NSThread currentThread];
+ (double)threadPriority;
+ (BOOL)setThreadPriority:(double)p;
- (void)setName:(NSString *)n;
- (NSString *)name;
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
[self performSelectorInBackground:@selector(run) withObject:nil];
상기 2가지 라인 생성 방식의 장단점 장점: 간단하고 빠른 단점: 라인에 대해 더 자세한 설정을 할 수 없음
다음은 코드 예입니다.
@interface ViewController ()
@property(nonatomic,strong)UIButton * button;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.button];
}
- (UIButton *)button
{
if (_button == nil) {
_button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
_button.backgroundColor = [UIColor brownColor];
[_button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
}
return _button;
}
- (void)buttonClick
{
//
NSThread *current=[NSThread currentThread];
//
NSLog(@" ----%@",current);
//
NSThread *main=[NSThread mainThread];
NSLog(@" -------%@",main);
//
[self creatNSThread];
// [self creatNSThread2];
// [self creatNSThread3];
}
/**
* NSThread 1
* 1>
* 2> start
*/
- (void)creatNSThread
{
NSThread *thread=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@" A"];
//
thread.name=@" A";
//
[thread start];
NSThread *thread2=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@" B"];
//
thread2.name=@" B";
//
[thread2 start];
}
/**
* NSThread 2
* ( )
*/
- (void)creatNSThread2
{
// NSThread *thread=[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@" ( ) "];
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@" ( ) "];
}
/**
* NSThread 3
* , ( )
*/
- (void)creatNSThread3
{
// ===
[self performSelectorInBackground:@selector(run:) withObject:@" "];
}
- (void)run:(NSString *)str
{
//
NSThread *current=[NSThread currentThread];
//
for (int i=0; i<10; i++) {
NSLog(@"run---%@---%@",current,str);
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
이 코드들의 운행 결과를 스스로 시험해 보아라
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.