Skip to content

Instantly share code, notes, and snippets.

@Coneko
Created January 8, 2013 23:51
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 Coneko/4489195 to your computer and use it in GitHub Desktop.
Save Coneko/4489195 to your computer and use it in GitHub Desktop.
Testing -[RACScheduler scheduleRecursiveBlock:]'s memory consumption.
#import <Foundation/Foundation.h>
#import <ReactiveCocoa/ReactiveCocoa.h>
@interface CountUpToXEnumerator : NSEnumerator
+ (instancetype)countUpTo:(NSUInteger)x;
@end
@implementation CountUpToXEnumerator {
NSUInteger _x;
NSUInteger _current;
}
+ (instancetype)countUpTo:(NSUInteger)x {
CountUpToXEnumerator *enumerator = [[self alloc] init];
enumerator->_x = x;
return enumerator;
}
- (id)nextObject {
if (_current == _x) return nil;
return @(_current++);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSEnumerator *enumerator = [CountUpToXEnumerator countUpTo:1000000];
__block NSUInteger sum = 0;
[[RACScheduler scheduler] scheduleRecursiveBlock:^(void (^reschedule)(void)) {
@autoreleasepool {
NSNumber *nextNumber __attribute__((objc_precise_lifetime)) = [enumerator nextObject];
sum += nextNumber.unsignedIntegerValue;
}
reschedule();
}];
}
sleep(UINT32_MAX);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment