나는 주제에 관한 책과 함께 Objective-C 세계에서 저의 첫 걸음을 딛고 있습니다. 이제는 사용자 지정 클래스를 만들고 사용하는 개념을 내재화하는 단계로 넘어갔습니다.마술사와 커스텀 클래스 - 헤더와 구현 파일 이해하기
그리고이 기본 개념과 원리를 올바르게 이해하는 것이 내 미래의 Objective-C 학습의 열쇠라고 생각합니다. 개념을 다소 정확하게 파악했는지 확인하고 싶습니다.
그래서 사용자 지정 클래스를 만들 때이 작업은 공용 클래스 헤더 파일과 클래스 구현 파일이라는 두 개의 개별 파일에서 수행된다는 것을 이해했습니다. 그리고이 개념을 내면화하기 위해서, 나는 관객 앞에서 그 마술을하는 "마술사"와 평행을 이룬 것을 은유 적으로 이해했습니다.
헤더 파일은 마술사가 수행하는 극장 외부의 포스터와 다소 비슷합니다. 들어 오기 전에 우리는 마술사가 어떻게 보이는지 (속성), 그가 무엇을 트릭하는지 (대부분 "he") 수행 할 수 있는지 (메서드), 그리고 어떤 종류의 물건에 자신의 마술 트릭을 만들 수 있는지). 따라서 마술사의이 "공개"포스터 (헤더 파일)에서 나는 그가 수행 할 수있는 마술의 종류와 그가 사용하고있는 소품을 이해할 수 있습니다. 어쩌면이 특별한 마술사가 위대한 후디니 (계급 유산과 후디니가 수퍼 클래스이기 때문에)로부터 그의 트릭을 배웠다는 언급도있을 것입니다.
내가 무대 뒤에서 허락한다면, 나는 그가 실제로 그의 트릭을 어떻게하는지 볼 수있을 것이다. 즉, 나는 마술사 구현 파일을 볼 수있을 것이다.
이 은유는 사용자 정의 클래스의 개념을 이해하는 방법에 따라 다소 다를 수 있습니까?
그러나 클래스 메서드 및 인스턴스 메서드의 개념이이 메타포와 어떤 관련이 있는지 아직 알지 못합니다.
인스턴스 메소드가이 특정 쇼에서 마술사의 특정 "인스턴스"가 수행하는 트릭 범주에 속한다고 말하면 좋겠습니까? 클래스 메소드는 현대 마술사가 수행 할 수있는 트릭이 될 수 있습니까? 셋째, 메소드가 "유형"을 사용하는 방식을 다소 혼란스럽게합니다. 일부는 인터페이스 파일에서 앞에 선언 된 것처럼 보이고 일부는 메서드 내에서 즉시 "선언 된"것처럼 보입니다.
@interface Magician : NSHoudini
// Instance method that given a variable of type rat it will turn this into something of type rabit
- (rabit) FromRatToRabit: (rat) aRat;
@end
를 그리고 구현 파일은 다음과 같습니다 :
는 "마술사"클래스를 사용하는 예제를 이용하려면, 헤더 파일에 대한 이해는 다음과 같을 수#import “Magician.h”
@implementation Magician
rabit aRabit
// rabit being the type and aRabit the variable
- (rabit) FromRatToRabit:(rat)aRat;
{
// some magic code goes here which will take what’s in the aRat variable, of type rat
// and turn it into a form of type rabit and return it in the aRabit variable
aRabit
}
@end
하는 경우 위의 올바른 나는 왜 당신이 "피드"메서드를 선언하지 않은 aRat 변수를 궁금해? 또는 선언을 메서드 설명에서 사용할 때 완료로 간주합니까?
대단히 감사합니다. Carl, 그런 길이로 설명해 주셨습니다! 그리고 예, 저는 은유가 개념을 이해하려고 할 때 위험한 물건이라는 것에 동의합니다. 그러나 당신이 위에 쥐었던 개조를 통해 나는 아직도 그것을 어떻게 든 사용할 수 있다고 생각합니다. Dima가 지적했듯이, 수퍼 클래스 인 Houdini의 선택은별로 잘 생각지 않았습니다. – DAWO
도움이 되었기 때문에 기쁩니다. –