Coo*_*coa 41 iphone multithreading cocoa-touch objective-c nsoperation
我一直在寻找一些具体的场景,NSOperation以确定iPhone 何时是应用程序中使用的理想工具.据我所知,这是编写自己的threaded代码的包装器.我还没有看到任何使用它的Apple演示应用程序,我想知道我是否错过了一个很棒的工具而不是使用它NSThread.
这里的理想解决方案是描述用例场景NSOperation以及如何使用它来解决您的问题.
ndu*_*sis 33
我在iPhone应用程序中使用它的方法是在我的应用程序委托中基本创建一个NSOperationQueue成员,并通过属性使其可用.然后每当我需要在后台运行某些东西时,例如下载一些XML,我只需创建一个NSInvocationOperation并将其发送到queque.
NSInvocationOperation *operationToPerform = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(updateXML) object:nil];
[[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] sharedOperationQueue] addOperation:operationToPerform];
[op release];
Run Code Online (Sandbox Code Playgroud)
小智 10
总之一句话: NSOperationQueue
NSOperationQueue 是线程安全的(您可以从不同的线程向其添加操作而无需锁定)并使您能够将NSOp对象链接在一起.
我的Flickr iPhone应用程序,思考,使用NSOperation和NSOperationQueue广泛管理下载图像和XML.
警告:确保您在阅读"并发"时阅读,重新阅读并理解文档的含义.
您还应该查看此URL:http: //developer.apple.com/cocoa/managingconcurrency.html
以上所有答案都很棒,但请确保您阅读上面的文章并在代码中自由使用此行:
if ( self.isCancelled ) return;
Run Code Online (Sandbox Code Playgroud)
在Coca提供的样本中没有使用该行是我的女朋友,直到我从现场获得崩溃登录才知道这是一个问题/概念.
这是一个非常简单的实现,但需要时间阅读教程以完全理解所有内容:
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(methodToCall)
object:objectToPassToMethod];
[queue addOperation:operation];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43086 次 |
| 最近记录: |