我已经尝试了解我的代码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中(如果它可以从任何视图工作,它会很棒:-)))。
非常感谢!
答案 0 :(得分:1)
您需要实际创建您的队列。您只需声明一个实例变量来存储队列。
在构造函数(init方法)中,添加:
self.queue = [[NSOperationQueue alloc] init]
如果之前有效但不再有效,你可能会开始调用另一个构造函数。我经常犯的一个错误就是在initWithFrame中进行设置:在我的自定义视图中,然后开始使用nib中的视图,这意味着将调用initWithCoder: