2015-05-23 3 views
0

В настоящее время я пытаюсь вызвать селектор со следующей строкой кода:Objective-C - вызов performSelector

[self performSelector:@selector(locationManager:) withObject:nil afterDelay:searchAnimation.animationDuration]; 

метод я пытаюсь назвать это:

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons: (NSArray *)beacons inRegion:(CLBeaconRegion *)region { NSLog(@"check"); } 

Может кто-нибудь мне помогает. Это не работает, потому что «Undeclared selector». Разве это не locationmanager: имя здесь?

Как я могу назвать эту функцию иначе?

Цистерны!

+3

Селектор is 'locationManager: didRangeBeacons: inRegion:', не более, не меньше. – bbum

ответ

0

EDITED В этом случае вы не можете использовать performSelector, он принимает только 0 или 1 аргументы. Спасибо @rmaddy.

Я не понимаю, что y'r пытается достичь, но, возможно, вы должны использовать CGD dispatch_after

Например:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(searchAnimation.animationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    <# call the delegate method here #> 
}); 

Надежда, что помогает :)

+0

Здесь вы не можете использовать метод 'performSelector ... ', так как селектор имеет более одного параметра. Вы должны использовать функцию 'dispatch_after' и вызвать метод напрямую. – rmaddy

+0

Конечно, вы можете, если не хотите отправлять аргументы функции. Во всяком случае, я думаю, вы должны лучше прочитать мой ответ, я рекомендую использовать dispatch_after. Приветствия. – portella

+0

Нет, вы не можете. В этом случае селектор принимает 3 аргумента. Документы для 'performSelector: withObject: afterDelay:' четко указывают, что селектор должен принимать 0 или 1 аргументы. И да, я соглашался с вами, что вы должны использовать 'dispatch_after'. Эта часть верна. – rmaddy