Ответы пользователя по тегу Objective-C
  • Objective c, как дождаться окончания работы блока?

    ivladiboy
    @ivladiboy
    Нужно, чтобы текущий поток дождался завершения асинхронного запроса.

    -(NSArray*)getData{
        __block NSArray *returnData = nil;
        if([self internetConnect]){
            dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void){
                [self reloadData:^(NSArray* loadData){
                    returnData = loadData;
                }];
            });
        }else{
            
        }
        return returnData;
    }

    Можно также завести свою собственную конкурентную очередь

    +(dispatch_queue_t)sharedConcurrentQueue {
        static dispatch_queue_t queue = nil;
        static dispatch_once_t onceToken = 0;
        
        dispatch_once(&onceToken, ^{
            queue = dispatch_queue_create("MyQueueName", DISPATCH_QUEUE_CONCURRENT);
        });
    
        return queue;
    }

    И помещать в нее любые задачи таким образом

    -(void)testFunc {
        dispatch_async([MyClass sharedConcurrentQueue], ^(void){
            // Все, что хотим запустить и идти дальше, не дожидаясь
        });
        
        dispatch_sync([MyClass sharedConcurrentQueue], ^(void){
            // Все, что хотим запустить и подождать завершения
        });
    }

    Почитать об этом можно тут.
    Или гуглить "Grand Central Dispatch".
    Ответ написан
  • Как открыть Карты из приложения iOS?

    ivladiboy
    @ivladiboy
    NSString *addressStr = @"Nevsky prospect, 72";
    
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.apple.com/?q=%@",  addressStr]]];
    Ответ написан
    Комментировать