NSOperation在全局队列中

时间:2012-05-07 15:58:39

标签: objective-c xcode global nsoperation nsoperationqueue

我已经尝试了解我的代码2天了。我希望你有个主意吗?

我正在尝试将NSOperationQueue创建为“全局”队列,以允许我从该viewController中的任何方法添加操作。在我尝试在.h文件中定义队列以使其成为全局队列之前,我在最初需要它的方法中创建了它,并且我能够添加操作。这很好用。但后来我想检查队列中是否有来自原始方法之外的任何活动操作,我显然不能这样做,因为我在方法中声明了它。所以我尝试使用以下代码在.h中声明它:

@property (strong, nonatomic) NSOperationQueue *queue;

位于.m:

的顶部
@synthesize queue;

这是我将操作添加到队列的代码。

NSInvocationOperation *doMorse = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(morse) object:nil];

[self.queue addOperation:doMorse];

问题是当我尝试添加操作时队列保持为空。 (之前工作正常。)我是否宣布队列错了?顺便说一句,是否有更好的解决方案使任何方法可以访问队列,而不是我尝试的方法? (在同一个viewController中(如果它可以从任何视图工作,它会很棒:-)))。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要实际创建您的队列。您只需声明一个实例变量来存储队列。

在构造函数(init方法)中,添加: self.queue = [[NSOperationQueue alloc] init]

如果之前有效但不再有效,你可能会开始调用另一个构造函数。我经常犯的一个错误就是在initWithFrame中进行设置:在我的自定义视图中,然后开始使用nib中的视图,这意味着将调用initWithCoder: