`
jsntghf
  • 浏览: 2542765 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

NSInvocationOperation的使用

    博客分类:
  • iOS
阅读更多

以前写过一篇介绍NSInvocationOperation的文章:多线程之NSInvocationOperation,这篇文章是基于此的一个例子。

 

RootViewController.h

 

#import <UIKit/UIKit.h>

@interface RootViewController : UITableViewController {
	NSMutableArray *array;
}

@property (nonatomic, retain) NSMutableArray *array;

@end

 

RootViewController.m

 

#import "RootViewController.h"

@implementation RootViewController
@synthesize array;

- (void)viewDidLoad {
    [super viewDidLoad];
    
	self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Load" 
                                                                              style:UIBarButtonItemStyleDone 
                                                                             target:self 
                                                                             action:@selector(loadData)];
	
	NSMutableArray *_array = [[NSMutableArray alloc] initWithCapacity:10000];
	self.array = _array;
	[_array release];	
}

- (void) loadData {	
	NSOperationQueue *queue = [NSOperationQueue new];
	NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                            selector:@selector(loadDataWithOperation) object:nil];
	[queue addOperation:operation];
	[operation release];
}

- (void) loadDataWithOperation {
	NSURL *dataURL = [NSURL URLWithString:@"http://icodeblog.com/samples/nsoperation/data.plist"];
	
	NSArray *tmp_array = [NSArray arrayWithContentsOfURL:dataURL];
	
	for(NSString *str in tmp_array) {
		[self.array addObject:str];
	}
	
	[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}

#pragma mark Table view methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.array count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
	[cell.textLabel setText:[self.array objectAtIndex:indexPath.row]];
	
    return cell;
}

- (void)dealloc {
    [super dealloc];
	[array release];
}

@end
分享到:
评论

相关推荐

    iOS多线程应用开发中使用NSOperation类的基本方法

    1. NSInvocationOperation使用示例: - 创建一个NSInvocationOperation对象,传入目标对象、选择器和参数。 - 调用`start`方法启动操作。当调用`start`时,如果操作未被取消,将会调用指定的目标对象的指定方法...

    iOS并发编程指南1

    7. **创建 NSInvocationOperation 和 NSBlockOperation**:NSInvocationOperation使用方法调用来封装操作,而NSBlockOperation则直接使用代码块(block)定义操作。这两种方式都可用于创建简单的异步任务。 8. **...

    OC-优先级NSInvocationOperation

    3. `NSOperationQueuePriorityNormal`: 默认优先级,大多数操作应该使用此优先级。 4. `NSOperationQueuePriorityLow`: 较低的优先级,这类操作可能会被更高优先级的操作抢占。 5. `NSOperationQueuePriorityVeryLow...

    OC-NSInvocationOperation

    4. 创建`NSInvocationOperation`:使用`-initWithInvocation:`初始化`NSInvocationOperation`,传入已准备好的`NSInvocation`。 5. 添加到操作队列:最后,将`NSInvocationOperation`对象添加到`NSOperationQueue`...

    OC-监听操作是否结束NSInvocationOperation

    在iOS和Mac开发中,Objective-C(简称OC)是一种广泛使用的编程语言,特别是在Apple的Cocoa和Cocoa Touch框架中。`NSInvocationOperation`是OC中的一个类,它继承自`NSOperation`,用于异步执行任务。在某些场景下,...

    Objective-C的NSOperation多线程类基本使用指南剖析.pdf

    ### NSInvocationOperation的使用 创建一个NSInvocationOperation实例,传入目标对象和选择器,然后调用`start`方法执行操作。例如,如果你有一个名为`run`的方法,可以这样创建和启动操作: ```objc ...

    iphone 多线程

    本篇将详细介绍iPhone开发中的多线程,特别是NSThread和NSInvocationOperation的使用。 **一、多线程基础** 在iOS中,多线程主要包括以下几种实现方式: 1. **NSThread**:这是Objective-C中直接对线程进行操作的...

    线程的使用

    `NSInvocationOperation`和`NSBlockOperation`是`NSOperation`的两个子类,前者用于封装选择器方法,后者用于执行Block。例如,创建一个`NSBlockOperation`: ```objc NSBlockOperation *op2 = [NSBlockOperation ...

    有关主线程和子线程

    NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(task7) object:nil]; NSInvocationOperation *op2 = [[NSInvocationOperation alloc] initWithTarget:self...

    NSOperationDemo

    NSInvocationOperationViewController: NSOperation 的子类 NSInvocationOperation 线程的基本使用 NSBlockOperationViewController: NSOperation 的子类 NSBlockOperation 线程的基本使用 ...

    IOS多线程教程

    `NSInvocationOperation`使用`NSInvocation`对象来表示要执行的操作,而`NSBlockOperation`则可以直接使用闭包(Block)来定义任务。 在实际应用中,选择合适的多线程技术取决于任务的特性和需求。例如,如果你需要...

    Objective-C的NSOperation多线程类基本使用指南

    1&gt; Foundation框架提供了两个具体子类直接供我们使用:NSInvocationOperation和NSBlockOperation 2&gt; 自定义子类继承NSOperation,实现内部相应的方法 2.执行操作 NSOperation调用start方法即可开始执行操作,...

    IOS并发编程指南

    通过使用 GCD 的原子操作和消息传递来减少锁的使用,从而提高并发性能。 #### 5.3 改进循环代码 使用 `dispatch_apply` 函数来优化循环代码,使其能够并行执行。 #### 5.4 替换线程Join 使用 `dispatch_group_...

    多线程技术在iOS开发中的使用.doc

    NSInvocationOperation和NSBlockOperation分别用于封装方法调用和代码块。NSOperationQueue可以控制并发数,使用`setMaxConcurrentOperationCount:`限制并发执行的任务数量,`addDependency:`方法可以设置操作间的...

    ios (线程 iphone 并发 异步 NSOperation)介绍

    - **子类**:`NSOperation`通常被子类化以实现特定的功能,如`NSInvocationOperation`和`NSBlockOperation`。 **3.2 并发VS非并发Operations** - **并发Operation**:可以在多个线程上并行执行的任务。 - **非并发...

    同步和异步的NSOperation的Demo

    你可以通过继承NSOperation来创建自定义的操作类,或者直接使用Apple提供的子类,如NSInvocationOperation和NSBlockOperation,来快速执行简单的任务。在NSOperation中,你可以添加依赖关系,控制操作的执行顺序,...

    NSOperation例子

    开发者通常会创建它的子类,或者使用Apple提供的两个内置子类:NSInvocationOperation和NSBlockOperation。NSInvocationOperation用于包装任何方法调用,而NSBlockOperation则支持直接执行代码块(block)。 在描述...

    iOS NSThread和NSOperation的基本使用详解

    NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil]; [op start]; } - (void)run { NSLog(@"------%@", [NSThread currentThread]); } - ...

    iOS 多线程NSoperation

    与直接使用GCD相比,NSOperation提供了更丰富的特性,如依赖管理、取消操作、操作队列以及更好的代码可读性。通过子类化或使用Block创建NSOperation实例,开发者可以方便地定义自定义任务。 二、NSOperationQueue ...

Global site tag (gtag.js) - Google Analytics