2010-03-02 11 views
7

iPhone API를 배우면서 인터페이스 빌더를 사용하여 가능한 모든 것을 수행하고 있습니다. 우리는 (때때로 외롭다) 코드를 작성하고 있지만 Interface Builder를 아주 잘 알고있는 것처럼 느껴집니다.인터페이스 작성기는 언제 사용해야합니까?

인터페이스 빌더는 직렬화 된 객체를 사용하고 코드를 작성하지 않으므로 다른 GUI 빌더와 다릅니다. 이것은 아마도 좋은 것입니다. 그래서 ... 매일 매일의 작업에서, 그것은 선택 도구입니까, 아니면 Interface Builder에 의존해야합니까?

또한 "귀하의 작업 내용에 따라 다르다"고 제안한다면 무엇에 의존할까요? 인터페이스 빌더를 사용할지 여부를 어떻게 결정해야합니까?

참고 :이 질문의 주관적이고 논리적 인 버전은 입니다. Interface Builder : 심각한 도구 또는 Just For Kids?하지만 나는 질문을 피하는 것을 피하고 싶기 때문에 반대했다.

답변

13

Interface Builder는 실제로 앱을 만드는 데 사용됩니다. Adobe 또는 Microsoft가 아닌 대부분의 Cocoa 기반 Mac 응용 프로그램을 살펴보십시오.이 응용 프로그램에는 빻은 글꼴이 가득한 것을 볼 수 있습니다. Interface Builder 없이는 iPhone 앱을 제작하는 것이 일반적입니다 (원래 SDK는 IB없이 출하 되었기 때문에).하지만 여전히 일반적으로 사용되는 도구입니다.

다른 인터페이스 빌더와 다른 점은 코코아와 인터페이스 빌더가 서로를 염두에두고 설계되었다는 것입니다. 실제로 Cocoa mailing list archives을 검색하면 Interface Builder를 사용하여없이 코코아 앱을 만들 수있는 방법을 궁금해하는 사람들이 많이 있습니다. (대답은 항상 동일합니다. 코드로 모든 것을 할 수 있지만 시간을 낭비하고 좋은 인터페이스를 설계하기가 더 어려워 질 것입니다.)

+0

덕분에,이 내가 무슨 생각의 일종이다. 적어도 그것은 참조 계산으로 채워진 하루에 긍정적 인 메모입니다. –

+0

이 질문은 오래된 질문이며 오래된 대답 인 것을 알고 있습니다. 그러나이 대답에 전적으로 동의합니다. – Moszi

+0

@Moszi, 당신은 Chuck의 답변을 여기에 모두 들여다 볼 수 있습니다. 지속적으로 통찰력 있고 유익합니다. –

3

표준 인터페이스를 사용하려는 경우 인터페이스 빌더가 유용합니다. UIKit 사용자 인터페이스 요소. Interface Builder를 사용하여 UIKit 기반 사용자 인터페이스를 디자인하면 Apple iPhone Human Interface Guidelines을 준수하는 데 도움이됩니다.

인터페이스 빌더를 사용하고 싶지 않은 경우는 매우 드뭅니다. 인터페이스 작성기는 고유 한 모양과 느낌을 제공하는 게임 중 가장 분명합니다.

"인터페이스 빌더에 대한 의존성"을 구축하는 것에 대해 걱정할 필요가 없다고 생각합니다. 다른 도구와 마찬가지로 도구입니다. 그것을 사용하는 것은 의존성이 아니며, 우리가 일을 처리하는 방식 일뿐입니다.

+1

Brian에게 감사드립니다. 다른 플랫폼의 다른 GUI 도구에서는 그렇지 않습니다. 빌더와 함께 작성되는 코드는 종종 끔찍하게 보이고 유지하기가 어려울 수 있습니다. 그래서 다른 도구와 같지 않다고 생각합니다. 그것은 그것을 잘 사용하지 않거나 때때로 사용하는 것과 잘 어울리는 것 같습니다. –

3

인터페이스 빌더는 훌륭한 도구입니다. 가능한 한 많이 사용하십시오.
인터페이스 빌더 만 사용하여 작업 할 수없는 경우 IBOutlet과 코드를 혼합하거나 코드에서만 수행하는 코드를 작성해야합니다.

2

Interface Builder는 코드를 생성하지 않고 단지 기존 클래스의 객체 그래프를 생성합니다. nib 파일을 보면 이것을 볼 수 있습니다. 어떤 객체를 만들지와 그 사이에 어떤 관계를 설정해야하는지에 대한 규칙 목록입니다. 펜촉에는 코드가 없으며 다양한 loadFromNib 메소드가 놀랍게도 아주 조금 있습니다.

이 모든 것을 가능하게하는 것은 Objective-c의 런타임 커플 링입니다. 나는 다른 어떤 언어도 실제로 그것을 해체 할 수 없다.

+0

아마도 틀 렸습니다.하지만 Java에도 런타임 결합 (리플렉션 및 동적 호출을 통해)이 있다고 생각합니다. 인터페이스 작성기는 없지만 이론적으로는 여러 언어로 가능합니다. 아니? –

+1

Java는 Objective-C에 의해 부분적으로 영감을 받았으므로 가까이에 올 수는 있지만 IIRC, Java는 "id"참조에 대응하지 않으므로 Objective-C만큼 융통성이 없습니다. 모든 언어에는 다른 언어보다 나은 점이 있으며 런타임 연결은 Objective-C forte입니다. – TechZen

관련 문제