SWIFT 28

[Swift] guard vs if

프로그래밍을 하다보면 조건문은 종종 depth가 길어져 복잡도를 높이는 원인이 되곤 합니다. 이러한 문제점을 피하기 위해 Swift 2.0에서 guard가 등장했습니다. guard vs if guard문은 후속 코드들이 실행되기 전에 특정 조건을 만족하는지 확인하는 용도로 사용합니다. else블록에는 이후의 코드 진행을 막는 return, break가 삽입되어야 하고 주로, 실행 흐름을 종료하기 위한 목적으로 주로 사용합니다. 반면에 if문은 조건이 참인 경우에 후속 코드를 실행하지 않는 코드가 삽입되어야 합니다. 옵셔널 바인딩시 차이점 guard, if문과 옵셔널 바인딩할 때의 차이점은 바인딩을 하는 변수와 상수의 scope입니다.

Swift 2018.04.27

[iOS] 콘텐츠 뷰 컨트롤러, 컨테이너 뷰 컨트롤러

콘텐츠 뷰 컨트롤러콘텐츠 뷰 컨트롤러는 이미지나 텍스트, HTML페이지 등 앱의 화면에 표현할 콘텐츠를 관리하는 컨트롤러입니다. 이를 위해 콘텐츠 뷰 컨트롤러는 화면 전체 사이즈의 루트 뷰를 내장하고 있으며, 이 뷰 위에 각종 콘텐츠를 얹어 화면에 출력합니다. 뷰 컨트롤러를 정의하는 기본 클래스는 UiViewController입니다. UiViewController를 상속받아 새로운 커스텀 뷰 컨트롤러를 정의하고, 스토리보드에 구현된 화면과 연결합니다. 이 때 커스텀 뷰 컨트롤러에 작성한 커스텀 코드는 스토리보드의 화면을 제어하여 우리가 원하는 대로 앱이 동작할 수 있도록 해줍니다. 커스텀 뷰 컨트롤러를 정의할 때에는 기본 화면 구조를 어떻게 설계할 것인가에 따라 상속받을 부모 클래스를 상황에 맞게 적절히..

iOS 2018.04.26

[iOS] 뷰 - Frame, Bounds 속성

frameframe속성은 뷰 자신의 위치나 크기 등 영역을 설정하는 경우에 사용합니다. (frame의 좌표 기준은 슈퍼 뷰입니다.) boundsbounds속성은 뷰의 내부에 있는 객체와의 관계에서 사용합니다. (bounds의 좌표 기준은 자기 자신입니다.) 주로 뷰 내부에 서브 뷰를 추가하기 위해 (0,0)의 원점 좌표가 필요할 때, 혹은 뷰 내에서 터치 이벤트가 발생한 위치를 판별해야 할 때 사용합니다. 정리 슈퍼 뷰가 서브 뷰에게 제공하는 좌표는 bounds 속성의 좌표이고, 서브 뷰는 이 좌표를 기준으로 자신의 frame속성을 설정하는 것. 참고 : 꼼꼼한 재은씨의 스위프트 실전편잘못된 부분 있으면 댓글 남겨주시면 감사하겠습니다.

iOS 2018.04.26

[Swift] Inheritance- final 키워드

Inheritance - Preventing Overrides(오버라이드 방지)Swift에서 final키워드를 사용하면 메소드, 프로퍼티, 서브스크립트가 오버라이드를 금지할 수 있습니다. 주로 재정의할 필요가 없을 때 final을 사용하는 것이 좋습니다. 참고로 클래스 자체가 상속되는 것을 막을려고 할 때에도 final을 사용할 수 있습니다. (final 클래스를 상속받으려는 클래스는 컴파일 시 에러가 발생합니다.)

Swift 2018.04.25

[Swift] map, filter, reduce

Swift의 표준 배열 라이브러리는 map, filter, reduce라는 세 가지 기능을 제공합니다. map 클로저로 각 항목들을 반영한 결과물을 가진 새로운 배열을 반환합니다. Declaration Parameters transform으로 넘기는 것은 클로저는 변경된 값을 반환하기 위해 해당 타입의 값을 반환합니다. Return Value 변환 된 요소를 포함한 배열 반환 사용 filter 클로저로 각 항목들을 비교하여 일치하는 결과물을 가진 새로운 배열을 반환합니다. Declaration Parameters isIncluded를 지원하는 클로저는 항목이 포함되는지(true) 또는 제외되는지(false) boolean값을 반환합니다. Return Value 변환 된 요소를 포함한 배열 반환 사용 re..

Swift 2018.04.17

[iOS] Label - 줄바꿈 속성(Line Break Option)

Character Wrap개별 문자 단위로 줄바꿈합니다. 하나의 단어가 완전히 끝나지 않았어도 라인의 끝에 도착하면 다음 라인으로 줄을 바꾸어 나머지 문자를 계속 출력합니다. 물론 Line 속성에서 설정된 라인 수를 넘어서면 나머지 텍스트는 표시하지 않습니다. Word WrapCharacter Wrap과 비슷하지만, 개별 문자가 아니라 단어 기준으로 줄바꿈합니다. 즉, 단어 중간을 끊어 줄바꿈하지 않는다는 뜻입니다. 이 때문에 단어 전체가 들어갈 공간이 충분하지 않으면 남은 공간이 있더라도 다음 라인으로 줄바꿈하는 특성이 있습니다. Truncate Head콘텐츠 출력에 필요한 라인 수보다 레이블에 설정된 Line 속성이 적을 경우, 마지막 라인의 첫 머리 텍스트 일부를 말줄임표로 처리합니다.즉, 앞부분을..

iOS 2018.04.15

[Swift] 접근 제어(Access Control) - 정의

접근 제어는 다른 소스 파일 및 모듈의 코드에서 코드의 일부에 대한 접근을 제한합니다. 이 기능을 사용하면 코드의 구현한 세부 사항을 숨기고, 해당 코드를 접근하고 사용할 수 있는 인터페이스를 지정할 수 있습니다. 각각의 타입(클래스, 구조체, 열거형)뿐만 아니라 프로퍼티, 메소드, 초기화, 서브스크립트에 대해 접근 레벨을 지정할 수 있습니다. 프로토콜은 전역 상수, 변수 및 함수처럼 특정 컨텍스트로 제한 될 수 있습니다. Swift는 다양한 수준의 접근 이외에도 일반적인 시나리오에 대한 기본 접근 수준을 제공함으로써, 명시적 접근 제어 수준을 지정하지 않아도됩니다. Note : 접근 제어를 적용할 수 코드(프로퍼티, 타입, 함수 등)의 다양한 측면을 간결하게 하기 위해 아래에서 "엔티티"라고 언급합니다.

Swift 2018.04.10