2010-03-22 5 views
1
내가 거의 때문에 나는 거의 내 수업 이외의 내 객체의 변수에 액세스 할 필요가 없다는 사실에, 속성을 사용하지 않는 것으로 나타났습니다

)값 할당 : 속성과 클래스 변수의 차이점은 무엇입니까?

그래서 나는 보통 수행

NSMutableArray *myArray; // not a property ! 

내 질문은 : 경우에도 난 아이폰이 나는 그렇게 생각하지만 난 그냥 확인하고 싶었

myArray = arrayPassedToMe; 

을한다면 어쨌든 유지할 수 있도록 않는, 속성으로 myArray의 선언하지 않습니다)

어떤 생각이라도 환영합니다! 고티에

답변

2

당신이 다음 더 호출이됩니다 유지 '유지하지'와 속성을 선언하지 않으면

. 유지하지만 당신이 수동을 수행 할 수 있습니다 (이 메모리 관리 훨씬 더 간단하게, 모든 경우에 대한) 속성 접근을 사용하는 것이 일반적으로 바람직하다 같은 :

myArray = [otherArray retain]; 
+0

그래서 이해한다면, 내가 방금하면 myArray = otherArray; myArray는 otherArray에 대한 참조일까요? 그래서 만약 otherArray가 해제되면, myArray는 자동으로 해제됩니다. otherArray가 수정되면 myArray도 수정됩니까? – gotye

+0

예, AFAIK 그 진술은 단순히 참조를 만듭니다. 너가 주변에 끈 것에 사로 잡히지 않는 경우에, 너는 그것을 '붙들어 야한다. – Rengers

0

다만,이 경우에는 케빈의 대답에 추가하는 방법 또한 확인해야한다는 것을 의미 당신이 그것에 새로운 값을 할당하기 전에 myArray의 현재 해제 가리키는되는 기존의 객체 : 유지와

[myArray release]; 
myArray = [otherArray retain]; 

당신이 선언 된 속성을 통해 클래스 변수에 액세스,이 모든 물건을/메모리를 공개하면 자동으로 수행되므로 삶이 훨씬 쉬워집니다.

관련 문제