ARC를 사용하는 경우 performSelector:
을 사용하여 다음 방법을 호출하려면 어떻게해야합니까? 나는 다음과 같은 것을 사용하는 경우performSelector : 안전하게 할당 된 객체를 반환하는 메서드를 사용
- (SomeClass *)test {
return [[SomeClass alloc] init];
}
, 나는 선택이 프로그램 생성되기 때문에 ARC는 무엇을 해야할지하지 않기 때문에 내가 누수를 소개 수도 경고를 얻을.
[object performSelector:selector];
이 방법은 실제로 누출되지 않습니다. 명명 규칙 때문에 컴파일러는 반환 된 객체를 자동으로 자동 렌더링합니다 (ARC 아래). –
@KevinBallard, 컴파일러에서 선택기 이름을 알 수 없더라도? – rid
예. 함수의 메모리 동작은 함수 자체에 의해 정의됩니다. 경고는 ARC가'-performSelector :'의 반환 값이 + 1 또는 +0 객체인지 알 수 없다는 것을 알려줍니다. 소유하지 않은 객체 (+0 객체)를 반환하는 메소드를 호출하는 경우 누수가 없습니다. 그러나 소유 된 객체 (+1 객체)를 반환하는 메서드를 호출하면'-performSelector :'에 대한 호출이 누출됩니다. –