1

我已经尝试了解我的代码有什么问题 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 中(如果它可以从任何视图工作,那就太棒了:-)))。

非常感谢你!

4

1 回答 1

1

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

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

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

于 2013-05-14T20:09:01.987 回答