2011-03-22 4 views
1

내 프로그램에서 UIView에서 상속되는 Object라는 클래스가 있습니다. 나는 또한 다른 객체들, 즉 원, 사각형, 삼각형을 Object로부터 상속 받는다.UIView/UIImageView 상속

내 문제는 Image라는 가능한 개체를 만들고 싶습니다. Image도 Object에서 상속됩니다. 화면의 모든 객체를 Object에서 상속 받았다면 화면의 모든 객체를 포함하는 물리 함수에 NSArray 포인터를 전달합니다.

내 Image 객체가 내 Object 클래스의 모든 속성을 가져 오는 가장 좋은 방법은 무엇입니까?

Image 개체에 대한 새 속성을 만들거나 개체를 상속하고 이미지를 표시 할 수있는 방법이 있어야합니다. 개체는 UIImageView가 아니라 UIView에서 상속하므로 이미지를 표시 할 수 있어야합니다.

답변

1

그건 아주 특별한 방법입니다. 자바 경험이 있습니까?

쉐이프로 무엇을하려고합니까? 당신은 그 각각의 클래스에서 그들을 그리려고합니까? 여기, 당신은 MVC의 라인을 흐리게하고 있습니다. 마치 서클, 스퀘어 등의 수업은 모델이면서 동시에 발생하지 않아야하는보기입니다. 도형을 그리려는 경우에는 클래스를 만들지 않으므로 Quartz drawing methods을 사용하여보기 컨트롤러의보기에 그릴 수 있습니다. 해당 도형에 대한 정보를 저장하려는 경우 UIView에서 상속하지 않아야합니다. NSObject (또는 사용자 정의 Shape 클래스)가 더 나은 옵션입니다. ("Object"클래스를 호출하는 것은 나쁘다. NSObject와 혼동을 일으킬 수있다.)

두 번째 단락은 내 첫 번째 질문의 출처입니다. NSArray는 이 아니며에 동일한 유형의 변수가 있어야합니다. 이는 Java의 배열 (및 C# 및 C와 같은 다른 언어)과 매우 다릅니다. 따라서 상속 받고 싶은 메소드 나 이바라가 없으면 Object 클래스를 선언 할 이유가 없습니다.

이미지 표시의 경우 Image로 무엇을 할 계획입니까? 이미지 (보기) 만 표시하려면 UIImageView (UIView의 하위 클래스)의 하위 클래스로 만듭니다. 이미지에 관한 정보를 저장하려면 Shape (또는이 경우 Object)의 서브 클래스로 만듭니다. 그러나 뷰와 모델의 기능을 결합해서는 안되기 때문에 원하는 것을 실제로 수행 할 수 없습니다 (Object와 UIImageView를 모두 상속 받음).

정말로 가장 좋은 옵션은 클래스를 다시 방문하여 MVC를 준수하게하고 상속 체인을 다시 생각해 보는 것입니다. 희망이 도움이!

1

가장 간단한 것은 Image가 Object에서 상속 받고 Image가 UIImageView 유형의 하위보기를 소유하게하는 것입니다.

+0

내가 찾고있는 것이고, 내 마음이 이렇게 좋아지지 않는다. 고마워. – Dalisto1

2

클래스가 두 개의 상위 클래스를 확장 할 수 없다는 것을 알게되었습니다.

"개체"가 클래스 대신 프로토콜이 될 수 있습니까? 그런 식으로 circle, square 및 image는 필요에 따라 UIView 또는 UIImageView를 확장하면서 해당 프로토콜을 구현할 수 있습니까?

+0

이것도 좋은 생각입니다. 묻는 질문은 다음과 같습니다. Object 클래스가 인스턴스 변수를 저장해야합니까? Object가 호출 할 메소드 만 제공하면 프로토콜로 만들 수 있습니다. 각 오브젝트에 데이터를 저장해야하는 경우에는 프로토콜이 될 수 없습니다. – Vagrant