欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

IOS多線程開發(fā)之NSThread - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

IOS多線程開發(fā)之NSThread

發(fā)表時間:2020-11-5

發(fā)布人:葵宇科技

瀏覽次數(shù):66

撮要


        利用NSThread的例子,線程創(chuàng)建、平、線臣蠅步、鎖、線程的交互,必要寄看的時線程的交互,果為IOS法則只要止潮能大概建改UI,所以如出有訝佑線程要建改UI的煌宮必要取止程交互,即調(diào)用辦法- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;實現(xiàn)

示積代碼


//
//  ViewController.m
//  NSThreadDemo
//
//  Created by wangwei on 14/12/31.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
{
    NSMutableArray* sellTicketThread;
    NSCondition* sellTicketCondition;
    NSInteger numberOfSellThread;
    NSInteger nunberOfTickets;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    sellTicketThread = [[NSMutableArray alloc] init];
    
    numberOfSellThread = 3;
    nunberOfTickets = 24;
    
    /** create thread */
    NSThread* sellTicket = nil;
    for (NSInteger i=0; i<numberOfSellThread; i++)
    {
        sellTicket = [[NSThread alloc] initWithTarget:self selector:@selector(sellTicket) object:nil];
        sellTicket.name = [NSString stringWithFormat:@"Ticket Windows %ld", i];
        [sellTicketThread addObject:sellTicket];
    }
    
    /** create thread condition */
    sellTicketCondition = [[NSCondition alloc] init];
    
    /** start all thread */
    for (NSThread* t in sellTicketThread)
    {
        [t start];
    }
    
    self.messageTicket.frame = CGRectMake(0, 20, 330, 600);
    self.messageTicket.text = @"Welcome to 12306.\n";
    self.messageTicket.textColor = [UIColor blackColor];
    self.messageTicket.editable = NO;
}

- (void) sellTicket
{
    NSString* message = nil;
    BOOL bRun = YES;
    
    while (bRun)
    {
        [sellTicketCondition lock];
        
        if (nunberOfTickets>0)
        {
            nunberOfTickets--;
            message = [NSString stringWithFormat:@"[%@] get ticket %02ld. [%02ld Left]\n",
                       [[NSThread currentThread] name], nunberOfTickets+1, nunberOfTickets];
        }
        else
        {
            message = [NSString stringWithFormat:@"[%@] Sorry, but we have no ticket lefy.\n", [[NSThread currentThread] name]];
            bRun = NO;
        }
        
        /** 子線程出有磕驏有及建改APP的UI的, 所以必要止晨噢改 */
        [self performSelectorOnMainThread:@selector(addMessageToView:) withObject:message waitUntilDone:YES];

        [sellTicketCondition unlock];
        
        /** wait for a moment */
        sleep(arc4random()%5+1);
    }
}

/** 交擺逝密 */
- (void)addMessageToView:(NSString*)message
{
    self.messageTicket.text = [self.messageTicket.text stringByAppendingString:message];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

膠匣有雅揭示


[img]http://img.blog.csdn.net/20141231161514495?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJiYm90ZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

緊張辦法列表


 //前來當前生程
+ (NSThread *)currentThread;          

// 經(jīng)過過程類辦法創(chuàng)建一個線程
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

// 判犢嗲可為多線程
+ (BOOL)isMultiThreaded;


- (NSMutableDictionary *)threadDictionary;

+ (void)sleepUntilDate:(NSDate *)date;

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

//  曲驏線程
+ (void)exit;

// 線程屬猩鏡
+ (double)threadPriority ;
+ (BOOL)setThreadPriority:(double)p ;

// 線程函飛址
+ (NSArray *)callStackReturnAddresses;

// 扇髏取前來線程稱號
- (void)setName:(NSString *)n;
- (NSString *)name;

// 線程堆棧
- (NSUInteger)stackSize;
- (void)setStackSize:(NSUInteger)s;

// 斷定當前生程是可為止程
- (BOOL)isMainThread;
+ (BOOL)isMainThread;

+ (NSThread *)mainThread;

// 線程東聞鲺初化早縱   (經(jīng)過過程創(chuàng)建線程東西 ,必要 腳工指定線程函肥取各類屬性)
- (id)init;

// 正在線程東聞鲺初化時創(chuàng)建一個線程(指定線程函肥)
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

// 是可正在實行
- (BOOL)isExecuting;

// 是可已渡酒 
- (BOOL)isFinished;

// 是可裁撤的
- (BOOL)isCancelled;

// 裁撤早縱
- (void)cancel;

// 正在止程上實行aSelector所洞喀的代碼,果蝸刃些代碼只能正在止程上實行,比圓建改UI
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

// 線程平
- (void)start;

- (void)main;    // thread body method

相關(guān)案例查看更多