使用操作对象的简单例子(63)

#import <Foundation/Foundation.h>
#import <stdio.h>
#import <stdlib.h>
#import <unistd.h>

NSMutableArray *MyList;

@interface MyOperation : NSOperation {
    int number;  //各任务号
    NSTimeInterval interval;  //时间间隔
}

- (id)initWithNum:(int)sn;
- (void)main;
@end

@implementation MyOperation
- (id)initWithNum:(int)sn {
    if ((self = [super init]) != nil) {
        number = sn;
        interval = (double)(random() & 0x7f) / 256.0; //生成少于0.5秒的随机值。
    }
    return self;
}

- (void)dealloc {
    NSLog(@"Realease: %d", number);
}

- (void)main {
    @try {
        @autoreleasepool {
            NSNumber *obj = [NSNumber numberWithInt:number];
            [NSThread sleepForTimeInterval:interval];
            @synchronized(MyList) {
                [MyList addObject:obj];
            }
        }
    }
    @catch(...) {/*只捕捉异常,不做任何操作*/}
}
@end

int main(void) {
    const int Tasks = 10;
    srandom((unsigned)getpid());  //随机数种子
    
    @autoreleasepool {
        int i;
        NSOperationQueue *queue = [[NSOperationQueue alloc] init];
        MyList = [[NSMutableArray alloc] init];
        
        for (i = 0; i < Tasks; i++) { //创建操作,添加到队列中
            NSOperation *opr = [[MyOperation alloc] initWithNum:i];
            [queue addOperation:opr];
    }
        [NSThread sleepForTimeInterval:2.0];  //等待终止
        for (id obj in MyList)
            printf(" %d", [obj intValue]);
        printf("\n");
}
    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值