스위프트

· iOS
앞서 공부한 세그웨이를 사용해서 화면을 전환할 경우 화면 복귀를 할 때는 2번째 뷰 컨트롤러에서 1번째 뷰 컨트롤러로 향하는 세그웨이를 추가해주면 될 것이라고 생각할 수 있다. 하지만 이렇게 할 경우 오류가 발생한다. 세그웨이는 목적지가 되는 뷰 컨트롤러의 인스턴스를 자동으로 생성해준다. 따라서 2번째-->1번째 뷰 컨트롤러로 새로운 세그웨이를 연결하면 기존에 존재하면 1번째 뷰 컨트롤러의 인스턴스 말고도 추가적으로 새로운 인스턴스가 하나 더 생기게 된다. 이렇게 되면 동일한 뷰 컨트롤러가 중복되기 때문에 앱에서 오류가 발생할 수 있다. 일반적으로 iOS에서 뷰 컨트롤러의 인스턴스는 한개 이상 존재해서는 안 된다!! 세그웨이에서 Unwind를 구현할 때도 앞에서 공부한 화면 복귀용 메소드를 이용할 수 있..
· iOS
iOS의 화면 전환 방식은 크게 4가지 정도로 나눌 수 있다. 뷰 컨트롤러의 뷰 위에 다른 뷰를 가져와 바꿔치기 (Container View Controller 사용) 뷰 컨트롤러에서 다른 뷰 컨트롤러를 호출하여 화면 전환 내비게이션 컨트롤러를 사용하여 화면 전환 화면 전환용 객체 세그웨이(Sequeway)를 사용하여 화면 전환하기 iOS에서 화면 전환은 다음의 2가지 특성을 가진다. 다음 화면으로 이동하는 방법과 이전 화면으로 되돌아가는 방법이 다름 화면 전환 방식에 따라 이전 화면으로 되돌아가는 방법이 다름 화면 전환 기법 1. 뷰를 이용한 화면 전환 (비추천) 하나의 뷰 컨트롤러 안에 두개의 루트 뷰를 준비하고, 상태에 따라 뷰를 적절히 교체해주는 방식이다. 뷰를 완전히 바꿔치기 할 수도 있고, 기..
· iOS
View Controller (뷰 컨트롤러) 앱의 화면을 관리하기 위한 코드 작성 (이벤트 발생 시 수행될 코드 작성), 일반적으로 화면의 개수만큼 필요하다. Storyboard (스토리보드) 앱에 사용되는 여러 화면을 하나의 파일에 모아 설계할 수 있도록 지원하는 UI 설계용 파일 형식 코드 없이 UI/UX 화면 구성 가능 앱의 전체 구조를 쉽게 파악 가능 Seque (세그웨이) 스토리보드를 통해 화면 전환 시 출발지와 목적지를 직접 지정하는 방식을 세그웨이를 이용한 화면 전환이라고 한다. 두개의 뷰 컨트롤러 사이에 연결된 화면 전환 객체를 세그웨이 라고 함. 마우스 우클릭 드래그, 혹은 ctrl + 드래그로 화면 연결 UIViewController UIKit 프레임워크에 정의되어 있는 클래스로, 기본..
· Swift
클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말한다. (함수는 클로저의 한 형태로, 이름이 있는 클로저라고 보면 된다.) 변수, 상수 등으로 저장이 가능하고, 전달인자로도 전달이 가능하다. 클로저 정의 { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저 사용 예시 클로저는 주로 함수의 전달 인자로 많이 사용된다. (콜백 함수 등) 함수 전달인자로 클로저 사용 예시 클로저 고급 클로저를 더 편리하고 간결하게 사용하기 위해서 아래와 같은 방법들을 사용해 줄 수 있다. 후행 클로저 반환타입 생략 단축 인자이름 암시적 반환 표현 [ 후행 클로저 ] 클로저가 함수의 마지막 전달인자라면 마지막 매개변수 이름을 생략한 후, 함수 소괄호 외부에 클로저를 구현할 수 있다. 괄호 위치가 헷갈..
· Swift
[ 클래스 - Class ] 전통적인 OOP 관점에서의 클래스 단일상속 (인스턴스 / 타입) 메서드 (인스턴스 / 타입) 프로퍼티 참조 타입 Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있다. [ 구조체 - Struct ] C 언어 등의 구조체보다 다양한 기능 상속 불가 (인스턴스 / 타입) 메서드 (인스턴스 / 타입) 프로퍼티 값 타입 Swift 대부분의 큰 뼈대는 모두 구조체로 구성되어 있다. [ 열거형 - Enum ] 다른 언어의 열거형과는 많이 다름 상속 불가 (인스턴스 / 타입) 메서드 (인스턴스 / 타입) 프로퍼티 값 타입 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의한 타입 ex) 요일, 월 등 열거형 자체가 하나의 데이터 타입이고, 열거형의 case 하..
· Swift
Swift의 열거형은 다른 언어들의 열거형에 비해서 강력한 기능을 갖고 있다. [ 열거형 - enum ] 열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입이다. 열거형은 배열, 딕셔너리 등의 타입과 다르게 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가하다. 때문에 열거형은 아래 같은 경우에 주로 사용해준다. 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 열거형의 이름은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의해준다. 스위프트의 열거형은 각각의 case가 고유의 값으로 취급된다. enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 ... } // 열거형 예시 enum Weekday { cas..
· Swift
스위프트에서는 구조체와 클래스의 모습과 문법이 거의 흡사하다. 프로퍼티, 메서드, 이니셜라이저 정의가 가능하고 그 밖에도 여러 공통점이 존재한다. 하지만 차이점도 분명 존재하며, 이 둘을 구분하는 가장 큰 차이점은 구조체의 인스턴스 -> 값 타입 클래스의 인스턴스 -> 참조 타입 (포인터와 유사한 개념) 이라고 볼 수 있다. 추가적인 차이점들은 다음과 같다. 구조체는 상속할 수 없다. 타입캐스팅은 클래스의 인스턴스에만 허용된다. 디이니셜라이저는 클래스의 인스턴스에만 활용할 수 있다. 참조 횟수 계산은 클래스의 인스턴스에만 적용된다. [ 구조체 ] 스위프트에서는 대부분의 타입이 구조체로 이루어져 있을 정도로 구조체가 중요한 역할을 담당한다. struct 이름 { 구현부 } // [ 구조체 선언 ] stru..
· Swift
[ Optional ] 옵셔널이란 값이 있을 수도 있고, 값이 없을 수도 있다는 것을 뜻한다. let optionalValue: Optional = nil let optionalValue: Int? = nil Optional이 필요한 이유? nil의 가능성을 명시적으로 표현해줄 수 있기 때문이다. (nil의 가능성을 문서화 하지 않아도 코드만으로 충분히 표현 가능) 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않더라도 안심하고 사용할 수 있다. 아래 예제와 같이 Int?(옵셔널) 타입이 명시된 함수에는 nil을 전달할 수 있지만 그렇지 않은 함수에는 nil을 전달할 수 없다. Optional의 표현 ! (Implicitly Unwrapped Optional, 암시적 추출 옵셔널) // [ 암시적 ..
· Swift
[ 조건문 ] 조건에는 항상 Bool 타입이 들어와야 한다. if - else 구문 if (condition) { // 조건에 괄호는 생략 가능 statements } else if (condition) { statements } else { statements } let someInt = 100 if someInt 100 { print("100 초과") } else { print("100임ㅋ") } // 100임ㅋ switch 구문 case문에서 명시적으로 break를 안적어줘도 자동으로 break를 해준다. default 부분은 꼭 작성해주어야 한다. switch value { case pattern: code defaul..
· Swift
[ 함수 선언과 호출 ] 반환 값이 있는 함수 func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { 함수 구현부 return 반환값 } func sum(a: Int, b: Int) -> Int { return a + b } 반환 값이 없는 함수 func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> Void { 함수 구현부 return } func printMyName(name: String) -> Void { print(name) } // Void 아예 생략 가능 func printMyName(name: String) { print(name) } [ 함수 고급 ] 매개변수 기본값 설정 func 함수이름(매개변수..
kybeen
'스위프트' 태그의 글 목록 (2 Page)