withObject :를 사용합니까? 그렇다면 NSNumber를 그냥 지나칠 수 있을까요?performSelector : 메서드에 여러 매개 변수를 사용하려면 어떻게해야합니까?
메소드의 서명에 어떻게 나타 납니까?
- (void)methodName:(NSTimer *)timer withObject:(NSNumber *)value {}
withObject :를 사용합니까? 그렇다면 NSNumber를 그냥 지나칠 수 있을까요?performSelector : 메서드에 여러 매개 변수를 사용하려면 어떻게해야합니까?
메소드의 서명에 어떻게 나타 납니까?
- (void)methodName:(NSTimer *)timer withObject:(NSNumber *)value {}
여러 개의 데이터 객체를 하나로 캡슐화하는 NSArray 객체 또는 NSDictionary를 사용할 수 있습니다! 예에서 :
NSArray * myDataArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:2],@"A String", nil];
[self performSelector:@selector(doStuff:) withObject:myDataArray afterDelay:1.0];
-(void)doStuff:(NSArray *)array{
NSNumber * myNumber = [array objectAtIndex:0];
NSNumber * myNumber2 = [array objectAtIndex:1];
NSString * myString = [array objectAtIndex:2];
}
수 없습니다. 그러나 NSDictionary
을 전달할 수 있으며 여러 개체를 압축하고 추출 할 수 있습니다.
또한 NSInvocation
클래스를 살펴보십시오.
NSObject
프로토콜로 선언 된 performSelector:withObject:withObject:
을 사용하여 최대 두 개의 매개 변수를 직접 전달할 수 있습니다.
예제를 사용하면 선택자는 @selector(methodName:withObject:)
이됩니다.
당신은 또한 가져 당신이 필요로하는 인수로있는 NSArray를 사용하는 방법을 수정할 필요없이, 많은 인수를 전달하는 objc_msgSend를 호출 할 수 있습니다. –
Pellet