zoukankan      html  css  js  c++  java
  • IOS中performSelector线程使用

    Cocoa框架中 NSObject 提供了名字中包含performSelector的方法来实现多线程编程技术。

    例如:

    performSelectorInBackground:withObject方法;

    performSelectorOnMainThread方法;

    定义这些方法要遵从以下限制:

    1、这些方法运行在各自的线程里,因此必须为这些Cocoa对象创建一个自动释放池;

    2、这些方法不能有返回值,且要么没有参数,要么只有一个参数,格式如下:

    -(void) myMethod;

    -(void) myMethod:(id) myObject;

    当方法执行完成后,OC运行时会清理并弃掉线程。方法执行结束后,并不会通知你。

    如果想要在后台执行方法,如下:

    [self performSelectorInBackground:@selector(doWork)  withObject:nil];

    [self performSelectorInBackground:@selector(doWork)  withObject:arugmentObject];

    ////后台线程处理的方法

    -(void) doWork

    {

      NSAutoreleasePool *pool=[[NSAutoreleasePool  alloc] init];

      [slef  performSelectorOnMainThread:@selector(doneMainThread)  withObject:nil   waitUntilDone:NO];

      [pool  drain];

    }

    //主线程处理方法

    -(void) doneMainThread

    {

      //.........

    }

    //代码例子如下:

    //.h文件

    #import <Foundation/Foundation.h>

     @interface SelectorTester : NSObject

    - (void)runSelectors;

    @end

    //.m文件

    #import "SelectorTester.h"
    
    @implementation SelectorTester
    
    - (void)runSelectors
    {
        [self performSelector:@selector(myBackgroundMehod1)];
        [self performSelector:@selector(myBackgroundMethod2:) withObject:@"Hello Selector"];
        NSLog(@"Done performing selectors");
    }
    
    - (void)myBackgroundMehod1
    {
        @autoreleasepool
        {
            NSLog(@"myBackgroundMehod1");
        }
    }
    
    - (void)myBackgroundMethod2:(id)object
    {
        @autoreleasepool
        {
            NSLog(@"myBackgroundMethod2 %@", object);
        }
    }
    
    @end

    // main文件

    #import <Foundation/Foundation.h>
    #import "SelectorTester.h"
    
    int main(int argc, const char * argv[])
    {
        @autoreleasepool
        {
            SelectorTester *tester = [[SelectorTester alloc] init];
            
            [tester runSelectors];
        }
        return 0;
    }
  • 相关阅读:
    Sun:收购MySQL是现代软件史上最重要收购[ZT]
    SCI2012年收录的中文期刊
    Elsevier期刊投稿状态
    医学图像SCI
    贝叶斯法则,先验概率,后验概率,最大后验概率
    医学图像处理与分析方面的大牛
    2013 EI检索的国内期刊
    ICIP EMBC IUS 2013
    香港中文大学第六十九届颁授学位典礼 校长赠言 我默祷你们都能不负此生
    自动生成参考文献编号
  • 原文地址:https://www.cnblogs.com/zhaosuning/p/9448562.html
Copyright © 2011-2022 走看看