Swift 101 - 클래스, 변수, 속성 및 메서드

약속 한대로, 여기에 새로운 Swift 언어로 프로그램하는 법을 배우는 첫 번째 회비가 있습니다!

Swift에서 클래스 정의하기

다음 코드는 Swift 클래스 정의의 예를 보여줍니다.

Swift에서 클래스를 선언하려면 class 키워드 뒤에 클래스 이름을 사용합니다. 수퍼 클래스가 있으면 콜론과 수퍼 클래스의 이름을 추가합니다. 클래스의 시작과 끝은 여는 중괄호와 닫는 중괄호로 표시됩니다.

Swift에서 클래스는 Objective-C와 비교하여 하나의 .swift 소스 코드 파일에 정의됩니다. 여기서 클래스는 헤더 (.h) 파일과 구현 (.m) 파일이라는 두 개의 개별 파일로 정의됩니다.

변수 선언하기

다음 코드는 변수 선언의 예를 보여줍니다.

변수 이름 앞에 var 키워드를 사용하여 변수 선언을 시작합니다. 그런 다음 콜론을 추가하고 변수 유형을 추가합니다. 나중에 (=) 대입 연산자를 사용하여 변수에 값을 할당 할 수 있습니다.

Swift에서 변수에 초기 값을 할당하면 다음 코드와 같이 변수 유형을 지정할 필요가 없습니다.

Swift는 타입 추론 이라고 불리는 것을 가지고 있기 때문에 이것을 할 수 있습니다. 여러분이 할당 한 값을 기반으로 변수의 타입을 추측 하거나 추론 할 수 있습니다.

Objective-C에서는 클래스 수준에서 인스턴스 변수를 선언하고 메서드 내에서 지역 변수를 선언 할 수 있습니다. Swift에는 클래스 수준 변수가 없으며 메서드 내에서 선언하는 지역 변수 만 있습니다. 그러나 클래스 수준에서 속성을 선언 할 수 있습니다 (아래 선언 속성 섹션 참조).

별표의 끝

Objective-C에서는 별표를 사용하여 변수에 객체에 대한 포인터가 있음을 나타냅니다. Swift에서 상수 또는 변수는 직접 포인터가 아니더라도 메모리에있는 주소에 대한 포인터를 포함 할 수 있지만이 컨텍스트에서는 별표를 사용할 필요가 없습니다.

간단한 속성 선언하기

다음 코드는 속성 선언의 예를 보여줍니다.

보시다시피 변수를 선언하는 것과 매우 비슷합니다. 단, 메서드 내에서보다는 클래스 수준에서 속성을 선언한다는 점만 다릅니다.

변수와 마찬가지로 초기 값을 속성에 할당하면 속성 유형을 지정할 필요가 없습니다. 또한 이니셜 라이저 메서드 내에서 속성을 초기화 할 수도 있습니다 (자세한 내용은 Initializers에 대한 아래 섹션 참조). 다음 코드는 형식을 지정하지 않고 속성을 선언하는 예제를 보여줍니다.

Objective-C에서 속성에는 일반적으로 속성의 실제 값이 저장되는 백업 인스턴스 변수가 있습니다. Swift는 속성 및 인스턴스 변수의 개념을 통합하여 속성을 단순화합니다. 속성에는 더 이상 인스턴스 변수가 없습니다. 속성에 관한 모든 것은 단일 위치에서 선언됩니다.

Swift에서 코드를 작성하는 메소드에 속성과 동일한 이름의 매개 변수가없는 경우 속성을 참조 할 때 self 키워드를 사용할 필요가 없습니다.

계산 된 속성 선언

Swift는 다음 코드와 같이 getset 메서드가 연결된 속성계산합니다 .

이 예제에서 Thermometer 클래스는 간단한 온도 화씨 속성과 계산 된 temperateCelsius 속성을 갖습니다.

Swift에서 인스턴스 변수와 같은 것이 없으므로 Thermometer 클래스의 getset 메서드는 인스턴스 변수를 참조하지 않습니다!

이 경우 get 메소드는 temperatureFahrenheit 속성에서 값을 가져와 섭씨로 변환하고 값을 반환합니다. set 메소드는 전달 된 값을 취하여 화씨로 변환 한 다음 결과를 temperatureFahrenheit 속성에 저장합니다.

속성의 set 메서드에 전달 된 값은 newValue 라는 암시 적으로 명명 된 매개 변수에 저장됩니다. 다른 매개 변수 이름을 사용하려면 다음 코드와 같이 집합 뒤에 괄호 안에 이름을 지정할 수 있습니다.

매개 변수 이름을 지정하면 코드를 더 쉽게 이해할 수 있습니다. 이 예제에서 매개 변수의 이름을 celsiusValue 로 설정하면 set 메소드가 Celsius에서 Fahrenheit으로 값을 변환하는 것이 명확 해집니다.

선언 방법

다음 코드에는 Swift 메서드 선언의 예제가 포함되어 있습니다.

Objective-C와 마찬가지로 Swift에서는 속한 클래스의 시작 및 끝 중괄호 사이에 인스턴스 메서드를 선언합니다.

메서드를 선언하려면 먼저 func 키워드와 메서드 이름을 지정해야합니다. 메서드에 매개 변수가 있으면 괄호 안에 매개 변수를 포함합니다. 각 매개 변수에 대해 매개 변수의 이름 뒤에 콜론과 그 유형을 지정하십시오. 메서드에 반환 값이 있으면 하이픈과보다 큰 부호 ( -> ) 뒤에 반환 값의 형식을 추가합니다.

다음 코드에는 매개 변수를받지 않고 아무 것도 반환하지 않는 메서드의 예가 포함되어 있습니다.

알 수 있듯이 매개 변수가 없더라도 메서드 이름 뒤에 괄호가 필요합니다. 아무 것도 반환하지 않는 메서드는 괄호 뒤에 반환 값 표시기 ( -> )가 필요하지 않습니다.

초기화 메소드

다음 코드에는 클래스를 초기화하는 데 사용되는 초기화 메서드의 예제가 포함되어 있습니다.

초기화 메소드는 항상 init 이라는 이름을 가지며 Objective-C와는 달리 절대 값을 반환하지 않습니다. 위의 예제에서 init 메소드는 초기 온도를 전달할 수있는 currentTemperature 매개 변수를 허용합니다. 이 값은 temperatureFahrenheit 속성에 저장됩니다.

다음 코드 샘플에서와 같이 여러 Initalizer 메서드를 만들 수 있습니다.

이 예제에서 두 메소드의 이름은 init 로 지정되므로 이름을 고유하게 만들려면 화씨에서 섭씨섭씨로 매개 변수에 외부 이름 을 지정합니다. 이렇게하면 init (fromFahrenheit :)init (fromCelsius :) 의 전체 메서드 이름이 각각 만들어집니다.

Swift에서는 init 메소드가 상속되지 않는다는 점에 유의할 가치가 있습니다. 실용적인 관점에서 볼 때, 이는 서브 클래스에서 재정의 할 수있는 코드를 init 메소드에 두어서는 안됨을 의미합니다. 클래스의 초기화 단계에서 실행하고자하는 코드가 있고 하위 클래스에서 해당 코드를 재정의 할 수 있도록하려면 별도의 메서드를 만들고 해당 메서드에 초기화 코드를 배치 한 다음 해당 메서드를 init .

클래스의 인스턴스 만들기

다음은 클래스의 인스턴스를 만드는 방법의 예입니다.

보시다시피 클래스의 인스턴스를 만들려면 클래스에 대한 참조를 보유 할 변수를 선언하고 등호 (할당 연산자)를 입력 한 다음 클래스 이름 뒤에 괄호를 입력하십시오.

결론

이들은 Swift 프로그래밍을 시작하기 위해 알아야 할 기본 사항 중 일부입니다. 다가올 포스트에서 필자는 Swift의 새로운 구문 및 구조에 능숙해질 수 있도록 언어를 깊이 파고들 것입니다.