[Swift] Struct 와 Class의 차이점 / Optinal / Protocol / UIKit / Xcode Magic key / 화면 전환

Soey·2022년 3월 13일
0

Swift

목록 보기
1/7

struct 와 class의 차이점

  • class : struct 와 달리 초기화 함수 생성 x : init( ) 으로 초기화 해주어야 함 → 초기화 함수 : class 가 생성될때 가장 초기에 생성되는 함수
class Operator {
	var a: Int
	var b: Int
    
		//초기화 함수 init()
  init(a: Int,b: Int){ 
      self.a = a
      self.b = b
  }
}

class Square {
	var sideLength: Double

		//초기화 함수 init()
  init(sideLength: Double){
    self.sideLength = sideLength
  }
}

Swift Code Formatter

https://github.com/nicklockwood/SwiftFormat#xcode-source-editor-extension

(터미널에 home brew 설치 필요)

https://sweetdev.tistory.com/393


let 과 var 차이

  • let : 선언 시 처음입력된 데이터만 저장
  • var : 선언 시 처음입력된 데이터 이후 추가로 입력가능, 마지막에 입력된 데이터가 최종 데이터로써 저장
let number1 : Int = 10
number1 = 0
// number1에 입력된 데이터는 변하지 않음

var number2 : Int = 20
number2 = 2
number2 = 30
// number2는 마지막에 입력된 데이터가 입력됨

Optinal

Optional은 Type casting이나 nil value 체크 등에 있어서 중요한 역할을 합니다.
Optional은 ‘?’을 통해 표현되는데, 그 의미는 다음과 같습니다.
“이 변수에는 값이 들어갈 수도 있고, 아닐 수도 있어(nil)”

Wrapping

Optional 타입은 기본적으로 wrap되어 있는 상태입니다. 즉, Optional로 선언된 변수들은 값이 있는 것인지, nil인 것인지 wrap되어 있어서 모르는 상태입니다.

→그렇기 때문에(컴파일러 입장에서는 변수가 nil일 수도 있기 때문에) wrap된 상태에서는 설령 변수에 value값이 있다고 하더라도 바로 value가 출력되지 않습니다.

var optionalString: String? =Helloprint(optionalString)
// 출력 결과: Optional(“Hello”)

이와 같이 optionalString이 nil일 수도 있기 때문에, 결과값 “Hello”가 출력되지 않고, Optional(“Hello”) 가 콘솔창에 출력됩니다.

**Forced Unwrapping**

앞선 예제에서처럼 출력 결과가 Optional(“Hello”)처럼 나오는 것은 대부분의 경우 원하는 출력값이 아닙니다. 이 때 올바른 출력을 위해 사용하는 것이 !(exclamation mark),
즉, 느낌표입니다. optional로 선언했지만, 무조건 변수가 있는 상황이 보장된 경우 느낌표(!)를 쓰면 우리가 원하는 Hello을 출력할 수 있습니다.

var optionalString: String? =Helloprint(optionalString!)
// 출력 결과: Hello

Protocol

→ *특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진*

Property Requirments

: 프로토콜에서는 프로퍼티가 저장프로퍼티인지 연산프로퍼티인지 명시하지 않고, 
이름과 타입 그리고 gettable, settable한지 명시한다. (프로퍼티는 항상 var로 선언해야 한다.)

protocol Student {
  var height: Double { get set }
  var name: String { get }
  static var schoolNumber: Int { get set }
}

UIKit

→ 사용자에게 보여주고 사용자와 Interaction 하기 위한 Framework (애플이 만들어 놓은) Class들의 집합

→ UI가 붙은 모든 것 !


Xcode Magic Key

  • 다중 커서 선택 Shift + control + 클릭
    Shift + control + ↑
    Shift + control + ↓

화면 전환

  1. Navigation & View Controller(Root Controller)를 만들어 서로 매칭 시킨다.

  2. 스토리보드에서 이동할 컨트롤러를 찾는다

    if let controller = 
    		storyboard?.instantiateViewController
    		(withIdentifier: "DetailController") 
    		// 스토리보드에서 DetailController 이름으로 된 ViewController를 찾아라
    				{
                navigationController?.pushViewController
    						(controller, animated: true)
            }
    • DetailController : 해당 스토리보드에 들어가 Identity - Storyboard ID 에 내가 옵셔널 바인딩해서 찾을 ID를 기입한다.
  3. 스토리보드에서 부여한 ID를 통해, View Ctrolr(Root View)에서 Detail Ctrolr로 이동하기

    • 앱 전체를 통솔하고 있는 (또는 내가 속한)Navigation controller에 DetailController를 push 하는 작업 !
profile
iOS Developer

0개의 댓글