2009-10-21 11 views
1

한 가지 확실하지 않은 점은 NSMutableArray 메서드의 차이점입니다.코코아 터치. 이 NSMutableData 메서드의 차이점은 무엇입니까?

// Class Method Style 

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData]; 

// Instance Method Style 

NSMutableData *myMutableDataInstance = nil; 

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease]; 

여기서 클래스 메서드는 무엇입니까? 인스턴스 메소드와 다른 점은 무엇입니까?

건배, Doug

+1

그런데이 메서드는 NSMutableArray에 속하지만 NSMutableArray는 – Vladimir

+0

에 속합니다. 나는 그 질문을 편집했다. 그것을 잡아 주셔서 감사합니다. – dugla

답변

5

클래스 방법 NSMutableArray를 생성하고 오브젝트 autoreleases.

인스턴스 메서드는 자신을 할당해야하는 개체를 초기화합니다. myMutableArrayInstancenil이기 때문에 작성한 코드는 실제로 아무 것도하지 않습니다. 위의 다른 결과를 얻을 것입니다

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc] 
              initWithCapacity:WholeLottaData] 
              autorelease]; 

initWithCapacity: 방법이를 반환하는 경우 : 피터 Hosey 댓글에 노트로
NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc]; 
[myMutableArrayInstance initWithCapacity:WholeLottaData]; 
[myMutableArrayInstance autorelease]; 

그리고

, 그것은 정말 의미 : 클래스 방법이 거의 비슷하다 다른 개체입니다.

+1

또는 더 정확하게 '[[[NSMutableArray alloc] initWithCapacity : WholeLottaData] autorelease]'. 'init' 메쏘드는 다른 인스턴스를 반환하거나, 리시버를 해제하고'nil'을 리턴 할 수 있다는 것을 기억하십시오 (어떤 시점 이후에 당신은 할당 해제 된 객체를 메시징합니다). –

+0

예. 7am에 질문을 입력하는 것은 버그가 발생하기 쉽습니다 ;-). 나는 그 질문을 편집했다. 알 수 있듯이, 두 가지 맛은 모두 내가 궁금해하는 것입니다. 일반적으로이 유형의 모든 클래스 메소드 (기본적으로 컬렉션 및 NSMutableData)가 자동 렌더링 된 객체를 반환한다고 가정 할 수 있습니까? 고마워, 크리스토퍼. – dugla

+0

예, 새 인스턴스를 반환하는 클래스 메서드는 자동으로 릴리즈 된 객체를 반환합니다. –