(또는 하나의 델리게이트가있는 단 하나의 클래스)동일한 델리게이트를 가진 여러 클래스를 해제하는 방법은 무엇입니까?
나는 웹에서 파일을 다운로드하는 DataGetter라는 클래스가 있다고합니다.
- (void) dataGetterFinished:(DataGetter *)dataGetter;
그래서 somehere 내가 여러 개의 파일을 설정할 수 있습니다 내 코드에서
은과 같이 다운로드 할 :
// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];
DataGetter *redFile = [[DataGetter alloc] init];
redFile.delegate = self;
[redFile getData:@"http://example.com/red-file"];
정적 연타를 사용하여 파일이 다운로드 된 때 트리거됩니다 대리자 방법을 가지고 있습니다 분석기에서 위의 각 할당 행은 '행에 할당 된 객체의 잠재적 누설 ...'오류를 가져옵니다. 그렇다면 어떻게 객체를 릴리즈할까요? 그것은 대의원이 있기 때문에 주변에 매달려있다. 그래서 그렇게
- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
[dateGetter release];
}
처럼 dataGetterFinished 방법의 마지막 줄을 해제 OK입니다 ... 또는 어떻게 든 오토 릴리즈를 사용 하는가?
감사합니다. 델리게이트 메서드에서 클래스를 공개하는 것보다 NSMutableArray를 사용하면 어떤 이점이 있습니까? 그것은 단순히 clang 신을 기쁘게하는 것입니까? – cannyboy
네, 그렇게 말할 것입니다. 나중에 데이터 겟터에 액세스하려는 경우 배열을 살펴볼 수 있습니다. 나는 항상 그것을하기의 훨씬 더 tidier 방법 느꼈다. –