2011-03-06 5 views
1

그래서 objective-c 및 iphone/ipad 개발에 새로운 있습니다. 우리 apis 중 하나에 연결하는 간단한 응용 프로그램으로 내 발을 젖게하려고합니다.Objective-C (iPhone 개발) 모범 사례의 대표자

지금은 사용자 이름과 비밀번호 입력 및 제출 버튼이있는보기가 있습니다. 클릭하면 해당 게시물을 가져 와서 간단한 게시 전화로 서버에 인증하려고 시도합니다. NSURL 자료를 사용하여 작업하고 있습니다. 원래는 내 View Controller에서 NSURLConnection에 대한 대리자 메서드를 선언하여 작동 시켰습니다. 일단 내가 제대로 작동했다는 것을 확인하면 그 물건들을 거기에서 꺼내야 할 필요가 있음을 알았습니다. 게시물을 수행 한 후이 객체가 대리자 메서드 선언이 있고 모든 물건을 처리

(void)authenticateWithUser:(NSString *)username andPassword:(NSString *)password 

:

그래서 나는 방법을 가지고 새로운 클래스 ApiLogin를 만들었습니다. 내가 만난 다음 문제는 뷰 컨트롤러로 어떤 정보를 다시 얻는 방법이었습니다. 비동기 호출이기 때문에 데이터를 반환 할 수는 없습니다. 그래서 약간의 파기 후에 나는 이치에 맞는 해결책을 시도했다. 내가 새로 생성 한 클래스에 대한 사용자 정의 델리게이트를 만들었습니다. 내 뷰 컨트롤러가 선언하고 사용하는 클래스를 만듭니다.

(void)loginDidFinish:(NSString *)login 

이것은 완벽하게 작동했습니다.

내 질문은 지금 ... 내가 토끼 ​​구멍에 떨어졌을 까? 아니면이게 좋은가요? 나쁜 케이스라면 십 수 명에 이르는 위임 함수를 사용하여 서버 통신 및 데이터 처리를 처리하는 클래스 모음 또는 하위 클래스가있는 클래스를 만들고 싶지 않습니다. 기본적으로 나는이 일을하고있는 것인가? 더 좋은 방법이 있습니까? 나는 새로운 도구를 받았다고 생각하며, 모든 문제를 해결하기 위해 도구를 사용할 기회로보고 그 실수를하고 싶지 않습니다. 필자는 iphone/ipad 개발을 처음 접했을 때부터 심각한 C 코딩을 한 이후로 오랜 시간이 걸렸습니다.

답변

0

: 또한,이 애플의 페이지가 좋은 읽을뿐만 아니라이 될 수 있습니다

http://css.dzone.com/articles/do-not-publishcreating-your

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html

가장 좋은 방법은 당신이 올바른 전략을 사용하고 있는지 확신하기 위해, 지사 : 당신은 객체가 서로 통신 할 수있는 여러 가지 방법에 대해 호기심이있는 경우 단순히 다른 사람에게 확인을 요청하는 것은 위임의 정의와 목적을 이해하고 해당 코드를 분석하여 자신이하려는 일에 잘 맞는지 확인하는 것입니다.위키 백과에서 발췌 :

소프트웨어 공학에서

의 위임 패턴은 객체 지향 프로그래밍의 디자인 패턴 입니다 객체 대신 작업 관련에 명시된 작업 중 하나 , 대표 그것을 수행 도우미 개체.

모든 것을 고려 (http://en.wikipedia.org/wiki/Delegation_pattern)

, 나는 당신이 현재하고있는 일에 올바른 궤도에 있다고 생각.

+0

링크를 제공해 주셔서 감사합니다. 확실히 나를 올바른 길로 보내 셨습니다. –

1

나에게 좋을 것 같습니다. 다른 솔루션으로는 View Controller가 Key-Value Observation을 사용하여 모델 객체를 관찰하고 그에 따라 업데이트하거나 로그인이 완료되면 NSNotification을 사용하는 것입니다.

1

보기 컨트롤러가 제어하는 ​​항목의 위임자가되는 것이 합리적입니다. 몇 가지보기 컨트롤러에서 동일한 메서드를 사용해야하는 경우 자체 클래스로 만들 뿐이지 만 대리자 메서드는 매우 복잡했습니다.

는 저자가 대의원 사용 당신과 비슷한 상황에 대해 이야기하는 것 때문에 당신은 도움이 링크를 찾을 수 있습니다
+0

내 문제는 서버에 다양한 호출을해야 대리인이 다른 호출을 올바르게 처리하는 방법이 필요한 경우였습니다. 모든 서버 작업을 처리하기 위해 자체 개체로 분해하는 것이 좋습니다. –

+0

물론 복잡성 관리가 전부입니다. –