Я все еще пытаюсь понять, как работают селекторы и динамическая типизация в задаче c. По сути, я пытаюсь реализовать этот метод (показано ниже в python / pseudocode, то же самое на самом деле: P)
def isInArray(value, array, test):
for item in array:
if test(item) == value:
return True
return False
test = lambda obj: obj.property
Мой код цели c:
+ (BOOL)value:(id)value:
isInArray:(NSMutableArray *)array
usingSelector:(SEL)selector {
for (id item in array) {
if (value == [item selector]) {
return YES;
}
}
return NO;
}
Однако, это выдает ошибку компиляции, жалуясь, что я сравниваю два типа указателей (id и SEL) в операторе if.
Разве не должен ли оператор if сравнивать значение объекта с объектом, возвращаемым при запуске селектора SEL для объекта arritem? Другими словами, почему он считает, что он сравнивает объект с SEL (я не вижу, что бы там возвращало SEL)