다른 작업과 방법 이름 변경하지만, 메소드 이름은 다른 동작으로 변경, 뭔가 아래 같은 :목표 - C : 나는 다른 클래스에서 메소드를 호출하는 요구 사항이 필요됩니다
NSArray *arrays = [NSArray arrayWithObjects:@"aaa", @"bbb", nil];
for (NSString *array in arrays){
blablabla.......
Aclass *abc = [[Aclass alloc] methodName%@:variable],array;
blablabla.......
}
인가가 Objective-C에 그런 식으로 코드를 작성하는 방법은 없습니까?
감사합니다.
대한 추가 정보 : 는 Aclass에서 메소드 이름과 같은 것입니다 :
-(NSArray *)procWithAAA:(NSInteger)aaaID
감사합니다!
Aclass에서 메소드 이름과 같은 것입니다 :
이- (NSArray를 *) procWithAAA : (NSInteger) aaaID이
가 --------- 너희들의 제안으로, 나는 다음과 같은 코드를 작성 하지만 ------- 작동하지
NSArray *arrays = [NSArray arrayWithObjects:@"aaa", @"bbb", nil];
for (NSString *array in arrays){
SEL customSelector = NSSelectorFromString([NSString stringWithFormat:@"procWith%@", array]);
if ([Sync respondsToSelector:customSelector]) {
Aclass * abc = [Aclass performSelector:customSelector:aaaID];
}else {
NSLog(@"## Class does not respond to %@", customSelector);
}
Aclass * ABC = Aclass performSelector : customSelector : aaaID]; 이 부분은 객관적으로 허용되지 않는다. 당신은 매개 변수 [self performSelector:<#(SEL)#> withObject:<#(id)#>];
NSArray *selectorArray = [NSArray arrayWithObjects:@"abc",@"gcd", nil];
for (NSString *method in selectorArray)
{
[self performSelector:NSSelectorFromString(method) withObject:nil];
}
방법 사용할 수 있습니다
감사
감사! Aclass에있어서의 이름 등이다 - (NSArray를 *) procWithAAA (NSInteger) aaaID NSArray를 배열 * = [NSArray를 arrayWithObjects의 "BBB"@ "AAA"@ 닐]; 에 대한 (NSString * 배열에 배열) if ([Sync respondsToSelector : customSelector]) { Aclass * abc = [Aclass performSelector : customSelector : aaaID]; } else { NSLog (@ "## 클래스가 % @"에 응답하지 않습니다., customSelector); } 작동하지 않습니다. –
Ok.Instead 클래스 값 속성에 저장하고 액세스 할 수있는 값을 반환합니다. 메서드를 수정하여 무효화 할 수 있다는 뜻입니다. 나는 대안을 찾아 볼 것이다. – Vignesh
NSInvocation.http : // stackoverflow를 사용해야합니다.co.kr/questions/313400/nsinvocation-for-dummies – Vignesh