线程通信初识和总结

来源:互联网 发布:mac 新建智能文件夹 编辑:程序博客网 时间:2024/06/07 00:56
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {        NSOperationQueue *queue = [[NSOperationQueue alloc] init];    [queue addOperationWithBlock:^{        NSURL *url = [NSURL URLWithString:@"http://pic.nipic.com/2008-05-07/20085722191339_2.jpg"];        NSData *data = [NSData dataWithContentsOfURL:url];        UIImage *image = [UIImage imageWithData:data];        NSLog(@"%p",image);        // 2.回到主线程,显示图片                        // 0.        [self.imageView performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES];        // 1.        //        [self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];        // 2.        //        dispatch_async(dispatch_get_main_queue(), ^{        //            self.imageView.image = image;        //        }) ;        // 3.        [[NSOperationQueue mainQueue] addOperationWithBlock:^{            self.imageView.image = image;        }];                        NSLog(@"finish");            }];}    //    NSOperationQueue/    // NSOperation 和 NSOperationQueue    /**     *  1.队列的类型     主队列     [NSOperation mainqueue];     添加到主队列中的操作,都会放到主线程中执行     非主队列     [[NSOperation alloc] init];     添加到非主队列中的操作,都会放到子线程中执行          2.队列添加任务     - addOperation:     - addOperationWithBlock:          3.常见方法     设置最大并发数     maxConcurrentOperationCount     队列的操作     cancelAllOperations     - cancel     -setSuspended:          4. 操作之间的依赖     - addDependency:     操作B依赖于A,等A执行完才会执行B     不能互相依赖     可以在不同queue的NSOperation直接建立依赖          5. 通信     // 执行一些比较耗时的操作     // 回到主线程     */        /**     *  6. 从其他线程回到主线程的方式     perform     GCD     NSOperationQueue     */        /**     *  7.判断编译器环境是ARC还是MRC?     #if __has feature(objc_arc)     // 当前编译器环境是ARC     #else     // 当前编译器环境是MRC     #endif     */        /**     *  8.类的初始化方法     + load     当类第一次转载进内存 OC运行时系统,就会调用     程序一启动就会调用     程序运行过程中,只会调用一次          + initialize     当类第一次被使用 ,比如alloc 就会调用     并非程序一启动就会调用     在程序运行过程中,1个类的某个操作,只想指向一次,放在+load中执行     */

0 0