我有两个几乎相同的方法,两个都是AFNetworking 2.0调用,使用块作为回调。每个从一个端点获取帖子,然后在完成块中,从另一个端点获取其他帖子,在第二个完成块中,我排序并合并到两个列表。
在两组完成块中,我使用weakSelf
,一个指向当前视图控制器的弱指针(__weak instancetype weakSelf = self;
)。这在我的getNewPosts方法中工作正常,但不是我的getMorePosts方法。它们仅在GET参数和插入到排序内容的主要Feed中的位置不同(newPosts使用[weakSelf.datasource insertObject:atIndex:i]
而更多邮件使用[weakSelf.datasource addObject:]
)
然而,问题似乎源于我致电[weakSelf mergeLists::]
时的问题。我以完全相同的方式使用完全相同的方法(在双阻塞回调中)但在fetchNewPosts中我得到null返回给我,这对于方法的实现是不可能的。奇怪的是,当我从weakSelf调用方法时,我只得到null。 fetchNewPosts可以调用[weakSelf mergeLists::]
没问题。
当自我没有改变时,有没有人知道我为什么能够或不能使用弱指针来自我?
答案 0 :(得分:0)
__weak instancetype *weakSelf = self;
vs __weak instancetype *weakSelf;
我希望在nil对象上调用方法和属性会引发某种警告,而不是一直吐出nils。