- (void)unsubscribe {
id object = self.object;
if (object) {
@synchronized(object) {
NSPointerArray *listeners = objc_getAssociatedObject(object, kListernersKey);
NSInteger index = 0;
for (RFSubscription *subscription in listeners) {
if (subscription == self) {
break;
}
++index;
}
[listeners removePointerAtIndex:index];
}
}
}
@end
- (void)unsubscribe {
id object = self.object;
if (object) {
@synchronized(object) {
NSPointerArray *listeners = objc_getAssociatedObject(object, kListernersKey);
NSInteger index = -1;
for (int i = 0; i < listeners.count; i++) {
RFSubscription *subscription = [listeners pointerAtIndex:i];
if (subscription == self) {
index = i;
break;
}
}
if (index == -1) {
return;
}
[listeners removePointerAtIndex:index];
}
}
}
这里这样写好像多次调用改方法会闪退
做了以下修改 希望作者review下