0
나는 다음과 같은 방법이 있습니다선택기를 매개 변수로 사용하는 메서드를 정의하는 방법에 문제가 있습니까?
- (void) broadcastSelector:(SEL)selector {
for (id listener in [self listeners]) {
if([listener respondsToSelector:@selector(selector)]) {
[listener performSelector:@selector(selector)];
}
}
}
을 그리고 나는 다음과 같은 방법으로 전화 해요 :
[self broadcastSelector:@selector(onLoginRequestStarted)];
을 그리고 그것은 작동하지 않습니다. 나는 다음과 같은 방법으로 셀렉터를 하드 코딩하는 경우
:
- (void) broadcastSelector:(SEL)selector {
for (id listener in [self listeners]) {
if([listener respondsToSelector:@selector(onLoginRequestStarted)]) {
[listener performSelector:@selector(onLoginRequestStarted)];
}
}
}
모든 것이 잘 작동 내 혼란은 다음과 같다. 그래서 나는 메소드를 호출하는 방법이나 매개 변수를 정의하는 방법에 문제가 있다고 가정하고 있습니다.
만약 제가 그렇게하면 'PerformSelector는 셀렉터가 알려지지 않았기 때문에 누수가 발생할 수 있습니다.'라는 경고를 받게됩니다. 나는 그것을 무시해야합니까? – tambykojak
하지만 효과가 있습니다. 감사합니다. – tambykojak
흥미롭게도 실제로 이런 유형의 코드를 작성하지 않아서이 경고에 대해 알지 못했습니다. 나는 [이 다른 대답] (http://stackoverflow.com/a/20058585/795339)이 경고를 피하는 대안과 대안을 제공한다고 생각한다. –