Programming/iOS_Swift(30)
-
[iOS_Swift] 클래스(class)와 구조체(struct)의 이니셜라이저(initializer)
기본적으로 클래스와 구조체는 인스턴스를 생성하는 과정에서 초기화를 반드시 하게 된다. 코드 상에서는 init이라고 표시된다. 예시를 통해 보자. 위 예시를 보면 따로 init이 보이지 않는다. 그러면 초기화를 하지 않은 것인가? 라고 생각할 수 있는데 이렇게 저장프로퍼티에 기본값이 할당되어 있다면 따로 사용자 정의 이니셜라이저를 만들지 않아도 기본적인 이니셜라이저가 자동으로 실행이 된다. 또한 인스턴스 student1에도 초기값을 할당하지 않고 생략해도 된다. 이거에 대한 이유 또한 프로퍼티에 기본값이 있기 때문이다. 위 예시와는 약간 달라졌는데 이번에는 이니셜라이저가 추가됐고 프로퍼티에 기본값을 할당하지 않은 대신에 이니셜라이저에 초기값을 할당했다. 그럼에도 결과는 동일하다. 그런데 만약에 나는 클래스..
2021.10.18 -
[iOS_Swift] 타입 캐스팅(Type Casting)
타입 캐스팅(Type Casting) 타입 캐스팅이란 최대한 간단히 이해해보기 위해 직역하자면 '타입을 확인하고 정하는 것'이다. 그렇다면 구체적으로 이게 무슨 뜻이고 뭘 확인하고 정하는 것일까. 두 가지 케이스로 나눌 수 있는데, 첫 번째로 만약 어떠한 인스턴스가 존재할 때, 우리는 그 인스턴스가 어떠한 타입의 인스턴스인지 명확히 확인하고 싶을 때, 두 번째로 그 인스턴스를 다른 어떤 타입의 인스턴스로 전환시켜서 활용하고 싶을 때 우리는 타입 캐스팅을 할 수 있다. 타입 캐스팅 관련 연산자는 크게 세 가지가 존재한다. 1. 타입 확인 연산자 : is 2. 타입캐스트 연산자 : as!, as? 첫 번째 케이스처럼 인스턴스가 어떠한 타입의 인스턴스인지 활용할 때는 타입 확인 연산자 is 를 활용하며 반환값..
2021.10.17 -
[iOS_Swift] 옵셔널(Optional), 옵셔널 바인딩(Optional Binding), 옵셔널 체이닝(Optional Chaining)
옵셔널(Optional) 옵셔널이란 간단하게 생각하면 어떤 상수나 변수로 선언된 타입(String, Int...)에 nil값이 있을 수도 있다는 조심스러운 기능이다. 조심스러움을 알 수 있는 한 예로 타입의 뒤에 ?를 넣어서 표현해준다. var nickname: String? var age: Int? 조금 더 명확하게 써주려면 var nickname: Optional 도 가능하다. 그러나 ? 하나만 써주는게 간단하고 편하다. 그러면 이런 옵셔널을 우리는 왜 굳이 사용해야 할까? 변수나 상수에 꼭 nil이 있을거라고 가정해야할 필요가 있을까. 그 이유는 다음과 같은 예로 생각하면 쉬울 것 같다. 가령 우리가 어떤 함수를 만들었다고 가정해보자. 해당 함수에는 매개변수가 있을 것이고 매개변수를 통해 우리는 외..
2021.10.14 -
[iOS_Swift] Properties - 저장 프로퍼티(Stored Properties), Instance
핵심만 쉽게 풀어서 이해해보자면, Property란 어떠한 value 값을 특정 클래스, 구조체, 열거형에 연결시켜준다. 프로퍼티에는 저장 프로퍼티, 연산프로퍼티, 타입프로퍼티 등이 존재하는데, 여기서는 프로퍼티의 종류 중 Stored Properties에 관한 내용만 우선 다뤄보자. 1문단 2번째 줄에 의하면, 저장 프로퍼티는 인스턴스의 일부로서 상수와 변수값들을 저장한다. 즉, 특정 클래스나 구조체 내의 변수나 상수값을 저장 프로퍼티로 저장한다는 뜻이다. 스위프트 문서의 예시를 빌려서 살펴보자면, FixedLengthRange 라는 구조체내의 변수로 선언된 firstValue와 상수로 선언된 length는 저장 프로퍼티로서 Instance에 활용이 된다. 즉 변수 구조체 rangeOfThreeItem..
2021.09.30 -
[iOS] Xcode 와 깃허브 연동 에러해결(reference 'refs/heads/main' not found (-9))
최근에 공부하고 있는 내용들을 지금부터라도 깃허브에 조금씩 업로드하면 좋을 것 같아서 아직 제대로 배우지 않았음에도 꾸역꾸역 시도를 해봤다. 아니나 다를까 에러 하나 때문에 대략 2시간을 허비했다. Swift특성상 한글로 된 자료가 많지 않으며 모든걸 영어로 해결하려다 보니 더 오래 걸린 것 같다. 특히 Xcode를 시작한지 얼마안된 사람들이라면 겪을만한 문제들인 것 같다. 1. 상황 아래 사진처럼 Xcode -> Preferences -> Account 에서 깃허브 계정까지 성공적으로 연동을 마친 상황이었다. 이후 연동된 깃허브 계정으로 리모트를 시도했다. 그런데, 계속해서 아래와 같은 오류가 발생하며, 리포지토리가 생성이 안됐다. 문제 해결을 위해 오류 키워드를 그대로 구글링도 해봤지만, 도움이 되는..
2021.09.30 -
[iOS] UIKit Framework (Framework와 Library 차이점)
iOS에는 다양한 Framework가 존재한다. 그 중에서 가장 상위의 Framework가 존재하는데 바로 Cocoa Touch Framework이다. Cocoa Touch Framework는 애플 대부분의 소프트웨어 프로그램을 빌드하기 위한 어플리케이션 개발환경을 의미한다. 즉 iOS에 있어서, 근간이 되는 Framework이다. Cocoa Touch Framework 내부에도 우리의 개발을 도와주는 또다른 Framework들이 존재하는데, 대표적으로 UIKit Framework가 있다. UIKit 은 우리에게 다양한 개발 도구를 지원해준다. UIView, UIViewController, UIFont ... 등의 객체들을 통해 개발을 원활하게 만들어 준다. * Framework와 Library의 차이점..
2021.09.30