NSThread应用

原创 2012年03月28日 19:43:34

在iphone开发中经常需要更新UI的显示,一般需要启动新的线程来运行相关数据地更新,然后在另一线程中更新UI. 这里利用NSThread实现这样一个功能:更新进度条。

//

//  NSThreadDemoAppDelegate.m

//  NSThreadDemo

//

//  Created by Chelsea Wang(420989762/wwssttt@163.com) on 11-10-11.

//  Copyright 2011 __MyCompanyName__. All rights reserved.

//

@implementation NSThreadDemoAppDelegate

float processValue = 0;

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    // Override point for customization after application launch.

    UIProgressView* processView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];

    [processView setFrame:CGRectMake(10, 50, 200, 30)];

    [processView setTag:101];

    [processView setProgress:0.0];

    

    UILabel* processLabel = [[UILabel alloc] initWithFrame:CGRectMake(225, 30, 100, 50)];

    [processLabel setText:[NSString stringWithFormat:@"%.2f%%",processValue*100]];

    [processLabel setTag:102];

    

    

    

    [self.window addSubview:processView];

    [processView release];

    [self.window addSubview:processLabel];

    [processLabel release];

    [self.window makeKeyAndVisible];

    

    [NSThread detachNewThreadSelector:@selector(updateProcess) toTarget:self withObject:nil];

    return YES;

}

-(void)updateProcess{

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

    [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:YES];

    [p release];

}

-(void)updateUI{

    if (processValue <= 1.0) {

        processValue += 0.1;

        

        UIProgressView* processView = (UIProgressView*)[self.window viewWithTag:101];

        [processView setProgress:processValue];

        

        UILabel* processLabel = (UILabel*)[self.window viewWithTag:102];

        [processLabel setText:[NSString stringWithFormat:@"%.2f%%",processValue*100]];

        

        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateUI) userInfo:nil repeats:NO];

    }else{

        processValue = 0.0;

        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateUI) userInfo:nil repeats:NO];

    }

}

相关文章推荐

iOS多线程之NSThread详解

  • 2016年08月22日 11:25
  • 99KB
  • 下载

iPhone开发【十四】多线程开发之NSThread——子线程模拟耗时操作

转载请注明出处,原文网址:http://blog.csdn.net/m_changgong/article/details/8213964  作者:张燕广 实现的功能:1)演示多线程开发。2...

IOS_多线程-NSThread

  • 2015年05月31日 07:54
  • 428B
  • 下载

NSThread多线程

  • 2012年05月04日 07:47
  • 870KB
  • 下载

iOS多线程编程之NSThread的使用

1、简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.、NSThread  2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQu...

swift NSThread线程同步买票小例子

  • 2015年08月28日 21:12
  • 33KB
  • 下载

iOS多线程编程之NSThread的使用

1、简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.、NSThread  2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperat...
  • xu_song
  • xu_song
  • 2015年06月13日 18:00
  • 263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSThread应用
举报原因:
原因补充:

(最多只允许输入30个字)