아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 17일차_구조체 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 17일차_구조체

바닐라머스크 2022. 2. 9. 23:50

swift에는 클래스와 구조체 타입이 공존하고 있음

 

■ 구조체

  • C언어 등의 구조체보다 다양한 기능 수행 가능
  • 상속 불가
  • 값 타입(value type)
  • Swift 대부분의 큰 뼈대는 모두 구조체로 구성되어 있음
  • 타입을 정의하는 것이기 때문에 타입이름은 파스칼 표기법을 사용하여 정의(즉, 대문자로 시작)
    바디 내부의 프로퍼티와 메서드는 소문자를 사용하여 정의
  • 타입내에 들어가 있는 변수는 프로퍼티, 함수는 메서드라고 이해할 수 있음
  • 구조체 바디내 포함 가능한 선언 종류
    → 가변 프로퍼티, 불변 프로퍼티, 타입 프로퍼티, 인스턴스 메서드, 타입 메서드, 초기화 구문, 서브 스크립트, 타입 별칭, 다른 구조체, 클래스, 행위자, 열거형 선언
    (단, 초기화 해제 구문, 프로토콜 선언은 포함 불가)

 

■ 구조체 특징

  • 구조체 인스턴스의 프로퍼티는 점(.)구문을 사용하여 접근 가능
  • 변수나 상수에 할당될 때, 함수 호출에 의해 인수로 전달될 때 등의 경우 구조체의 인스턴스는 복사됨
  • 인스턴스를 생성하여야 구조체 사용 가능
    : 
    인스턴스 생성 = 클래스와 구조체를 사용하기 위해 메모리에 생성함을 뜻함
  • 구조체에서 기본으로 정의된 생성자의 매개변수는, 구조체의 프로퍼티 이름으로 자동 지정됨
    → 별도로 생성자를 선언하지 않을 경우, 자동으로 생성자가 만들어짐

 

 

struct Student {
    var name: String = “Diplo”                // 가변 프로퍼티

    let age: Int = 25                                 // 불변 프로퍼티

    static var typeProperty: Int = 77     // 타입 프로퍼티

    func instanceMethod() {
        print(“blue skies")
    }                                                          // 인스턴스 메서드

    static func typeMethod() {
        print(“Bored in the House")
    }                                                         // 타입 메서드

}


var student: Student = Student()      // 가변 인스턴스 생성

student.name                                      // 점(.)구문을 이용해 프로퍼티 값에 접근

student.name = “Technasia"            // 가변 프로퍼티는 값 바꾸기 가능

 

■ 구조체 사용 case

  • 연관된 값들을 모아서 하나의 데이터 타입으로 나타내고자 할 경우
  • 다른 객체 또는 함수 등으로 전달할 경우
  • 상속하거나 상속받을 필요가 없을 경우 등

 

 

 

 

 

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.