Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ksm
Created March 21, 2012 21:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ksm/2152929 to your computer and use it in GitHub Desktop.
Save ksm/2152929 to your computer and use it in GitHub Desktop.
KVO granular notifications on NSMutableArray
/*
Thanks to @_bejo
*/
- (void)_insertGlobalRoomMessage:(id)msg atIndex:(NSUInteger)index
{
NSIndexSet *changeSet = [NSIndexSet indexSetWithIndex:index];
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
[(NSMutableArray *)self.globalRoomMessages insertObject:msg atIndex:index];
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
}
- (void)_removeGlobalRoomMessageAtIndex:(NSUInteger)index
{
NSIndexSet *changeSet = [NSIndexSet indexSetWithIndex:index];
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
[(NSMutableArray *)self.globalRoomMessages removeObjectAtIndex:index];
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
}
- (void)_removeGlobalRoomMessagesInRange:(NSRange)range
{
NSIndexSet *changeSet = [NSIndexSet indexSetWithIndexesInRange:range];
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
[(NSMutableArray *)self.globalRoomMessages removeObjectsInRange:range];
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment