저는 C++을 약간 알고 있습니다. 이제 Objective-C도 배우려고합니다. 내 책은 클래스 메소드를 간략하게 언급했으며 클래스 메소드는 클래스로 전송 될 수있는 메시지이며 종종 클래스의 인스턴스를 작성하는 데 사용됩니다.목표 C 클래스 메서드 == C++ 생성자?
이것은 클래스 메소드가 C++의 생성자와 비슷하다는 것을 의미합니까? 내 경우에는 Deck 클래스 (현재 C++)가있는 카드 게임을 사용합니다. 나는 그것의 인스턴스를 만들 때, 나는 이렇게 :
Deck *deckWithCards = [Deck newDeck:52]; // A deck with 52 cards with values
Deck *deckWithoutCards = [Deck newDeck]; // An empty deck
: 내가 목표 - C에서 같은 일을했다면
Deck deckWithCards(52); // A deck with 52 cards with values
Deck deckWithoutCards; // An empty deck
, 그것은 다음과 같이 그것을 할 좋은 "스타일"을 생각하다
클래스 메서드가 올바르게 이해 되었습니까? 클래스 메소드에 다른 용도가 있습니까?
Objective-C에 대한 압축을 알고 있지만 "클래스 메서드"라는 이름과 다른 대부분의 언어에서 사용되는 방식으로 판단하면 C++의'정적 '멤버 함수에 해당합니다. – Angew
ObjC 클래스 메서드와 C++ 정적 멤버 함수는 때때로 "팩토리"함수를 만드는 데 사용됩니다. 팩토리 함수는 객체를 제공하는 것을 목적으로하는 함수입니다 ... 객체 팩토리입니다. 생성자가 관련되면 factory 함수가 생성자 함수를 호출합니다 (제공 한 입력에 따라 다름). C++에서 직접 생성자를 호출하는 것은 팩토리 함수를 사용하는 패턴과 유사하지만 생성자가 객체를 할당하지 않기 때문에 팩토리가 아닙니다. – mah
이렇게 할 수는 있지만 그렇게하지 마시기 바랍니다 **. 팩토리 메소드는 단축키처럼 좋지만 일반적으로'[[object alloc] init]'구문을 사용해야합니다. 이와 같이 단축하고 싶다면, 이미 제공되고있는'new' 클래스 메소드를 사용할 수 있습니다. 바퀴를 재발 명하지 마십시오. – SevenBits