NSThread多线程方式

 1 #import "TableViewController.h"
 2 
 3 @interface TableViewController ()
 4 
 5 @end
 6 
 7 @implementation TableViewController
 8 
 9 - (void)viewDidLoad {
10     [super viewDidLoad];    
11     
12 }
13 
14 - (void)didReceiveMemoryWarning {
15     [super didReceiveMemoryWarning];
16     // Dispose of any resources that can be recreated.
17 }
18 
19 #pragma mark - Table view data source
20 
21 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
22     return 1;
23 }
24 
25 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
26     return 100;
27 }
28 
29 
30 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
31     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
32     //NSThread 线程对象,轻量级的多线程方式
33     //手动创建,手动启动线程
34     NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(loopIn) object:nil];
35     //执行
36     [thread start];
37     //取消,线程启动前可以取消,
38     [thread cancel];
39     
40     //自动执行线程
41 //    [NSThread detachNewThreadSelector:@selector(loopIn) toTarget:self withObject:nil];
42     
43     return cell;
44 }
45 -(void)loopIn{
46     
47     //手动创建的子线程须添自动释放池,系统的子线程无需添加
48     @autoreleasepool {
49         //线程休眠(秒)
50         [NSThread sleepForTimeInterval:1];
51         
52         //线程状态cancel/finish/excuting
53         //获取当前线程,输出线程状态
54         NSThread *currentThread = [NSThread currentThread];
55         //当前线程是否取消
56         NSLog(@"取消:%d",[currentThread isCancelled]);
57         //当前线程是否结束
58         NSLog(@"结束:%d",[currentThread isFinished]);
59         //当前线程是否执行
60         NSLog(@"执行:%d",[currentThread isExecuting]);
61         for (int i = 0; i < 100; i++) {
62             printf("%d",i);
63             //线程退出,强制退出当前线程
64             [NSThread exit];
65         }
66     }
67     //线程休眠(秒)
68     [NSThread sleepForTimeInterval:1];
69     
70     //线程状态cancel/finish/excuting
71     //获取当前线程,输出线程状态
72     NSThread *currentThread = [NSThread currentThread];
73     //当前线程是否取消
74     NSLog(@"取消:%d",[currentThread isCancelled]);
75     //当前线程是否结束
76     NSLog(@"结束:%d",[currentThread isFinished]);
77     //当前线程是否执行
78     NSLog(@"执行:%d",[currentThread isExecuting]);
79     for (int i = 0; i < 100; i++) {
80         printf("%d",i);
81         //线程退出,强制退出当前线程
82         [NSThread exit];
83     }
84     
85 }
86 
87 
88 
89 @end
 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()
 4 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 5 
 6 @end
 7 
 8 @implementation ViewController
 9 
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12     // Do any additional setup after loading the view, typically from a nib.
13 }
14 //返回
15 - (IBAction)back:(UIButton *)sender {
16     
17     [self dismissViewControllerAnimated:YES completion:nil];
18 //下载
19 }
20 - (IBAction)download:(id)sender {
21     //自动线程
22     [NSThread detachNewThreadSelector:@selector(loadImage) toTarget:self withObject:nil];
23     
24     
25 }
26 //加载图片
27 -(void)loadImage
28 {
29     NSURL *url = [NSURL URLWithString:@"http://b.hiphotos.baidu.com/zhidao/pic/item/a8ec8a13632762d01650d902a3ec08fa513dc625.jpg"];
30     NSData *imgData = [NSData dataWithContentsOfURL:url];
31     
32     UIImage *image = [UIImage imageWithData:imgData];
33     self.imageView.image = image;
34 }
35 
36 - (void)didReceiveMemoryWarning {
37     [super didReceiveMemoryWarning];
38     // Dispose of any resources that can be recreated.
39 }
40 
41 @end

 

posted @ 2016-03-25 21:15  恒远也  阅读(162)  评论(0编辑  收藏  举报