저는 데이터 보관에 대해 공부하고 있습니다. 표준 컬렉션 클래스는 쉬운 보관을 제공하지만, NSMutableArray
을 보관하려고합니다. 그래서 NSMutableArray
이 "NSArray
"이기 때문에 서브 클래스이기 때문에 읽었습니다. 그렇다면 이것은 괜찮습니다.서브 클래스 "is"클래스가 혼란 스럽습니다
그러나 그 생각은 나를 괴롭 히고, 이것이 Objective-C의 기본 개념이라는 것을 깨닫기 때문에 나는 올바르게 이해하고 싶습니다.
"jeep"하위 클래스가있는 "automobile"클래스가 있다고 가정 해보십시오. 이제 위의에 따라, 당신은 이런 말을 할 수
automobileInstance=jeepInstance;
을 ... 지프가 자동차의 서브 클래스이기 때문이다.
그러나 이것은 나에게 거꾸로 보인다. 난 당신이 대신 서브 클래스의 인스턴스가 슈퍼 클래스 인스턴스와 같은 될 수 있다는 말을해야한다고 생각합니다 :
지프 = 자동에게
모든 지프 후 자동차의 "는"전부는 아니지만 자동차는 지프 때문이다.
은 왜 당신은이 작업을 수행 할 수 있습니다NSArray*newArray=nsmutableArrayInstance;
그것은 같은 생각의 말 :
automobile=jeep;
내 예에.
예를 들어, 하위 클래스에 새 인스턴스 변수가 많이 추가되었을 수 있지만 수퍼 클래스와 같게 설정하면 해당 iVars가 "손실"되거나 수퍼 클래스가 인식하지 못하기 때문에 그렇지 않습니다. 진정으로 물체를 잡으면, 그것은 보일 것입니다.
수퍼 클래스의 모든 항목이 서브 클래스에 있으므로 sublass instance = superclass instance
을 말하는 것이 좋습니다. 하위 클래스에 있지만 슈퍼 클래스에는없는 추가 iVars에 대한 값을 얻지 못하면 기본값은 0으로 설정 될 수 있지만 적어도 존재합니다.
Objective-C는 영어의 문장 구조를 따르지 않습니다. –
자동차 주차 공간이 있다고 생각하십시오. 지프는 거기에 갈 수있어, 지프는 자동차 다. 그러나 당신이 지프를 위해 주차 자리를 특별히 가지고 있으면, 당신은 단지 그것에 낡았 던 닥치는대로의 자동차를 찔리지 않을 수 있었다, 그렇지? 그것은 지프가 아닐 수도 있습니다. 이제 Automobile * auto가 자동차를 놓을 곳을 선언한다고 생각하십시오 (기술적으로 자동차에 대한 포인터이지만, 그렇습니다). 네가 원하면 주차 장소. – cHao