.
- , . - , int
, . @ChrisH.
, , - . , , GCD, .
GCD , , . - - , , .
[ , !]
for
:
dispatch_source_t counter = dispatch_source_create (DISPATCH_SOURCE_TYPE_DATA_ADD, 0, 0, some_queue);
some_queue
, dispatch_get_main_queue()
.
, , :
NSUInteger maxCount = objectIDs.count;
dispatch_source_set_event_handler(counter, ^{
if (dispatch_source_get_data(counter) == maxCount)
[blockSelf.delegate finishedFetching];
}
);
, , , , , , .
, "" 1
:
dispatch_source_merge_data(counter, 1);
ARC 10.8+, counter
, , dispatch_release
. , , ; -)
:
- (void)fetchObjectsFromServerWithObjectIDs:(NSArray*)objectIDs
{
dispatch_source_t counter = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_ADD, 0, 0, some_queue);
NSUInteger maxCount = objectIDs.count;
dispatch_source_set_event_handler(counter,
^{
if (dispatch_source_get_data(counter) == maxCount)
[blockSelf.delegate finishedFetching];
});
typeof(self) __weak blockSelf = self;
for(NSString *objectID in objectIDs)
{
[self fetchObjectDataForObjectID:objectID withSuccessBlock:
^{
dispatch_source_merge_data(counter, 1);
}];
}
}
HTH