package org.cocoa4android.ns;
import java.lang.reflect.Method;
public class NSMethodSignature extends NSObject {
Class<? extends Object> reflectClass;
String selector;
Method method;
private int numberOfArguments;
public int numberOfArguments() {
return numberOfArguments;
}
boolean isValid = NO;
public boolean reflectMethod(Class<? extends Object> reflectClass,String selector){
this.reflectClass = reflectClass;
int numberOfParams = 0;
String methodName;
String[] parts = selector.split(":");
if (selector.indexOf(":")>0) {
numberOfParams = parts.length;
methodName = parts[0];
}else{
methodName = selector;
}
Method[] ms = reflectClass.getMethods();
for(int i=0;i<ms.length;i++){
Method method = ms[i];
if(method.getName().equals(methodName)){
Object[] params = method.getParameterTypes();
if (params.length==numberOfParams) {
this.method = method;
this.selector = selector;
numberOfArguments = params.length;
isValid = YES;
break;
}
}
}
if (!isValid) {
throw new IllegalArgumentException("No Such Method");
}
return isValid;
}
}