목록분류 전체보기 (179)
study record
맵 맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수이다. 배열, 딕셔너리, 세트, 옵셔널 등에서 사용할 수 있다. 맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환한다. 기존 컨테이너의 값은 변경되지 않고 새로운 컨테이너가 생성되어 반환된다. 맵은 기존 데이터를 변형하는데 많이 사용한다. map 메서드의 사용법은 for-in 구문과 별 차이가 없다. 다만 코드의 재사용 측면이나 컴파일러 최적화 측면에서 성능 차이가 있다. 다중 스레드 환경일 때 대상 컨테이너의 값이 스레드에서 변경되는 시점에 다른 스레드에서도 동시에 값이 변경되려고 할 때 예측지 못한 결과가 발생하는 부작용을 방지할 수도 있다. ..
캘린더에 특정 날짜들에만 특정 이미지를 넣고자 하였다. 하지만 구글링하여도 잘 나오지 않았고, 공식 깃허브 사이트에도 그 방법이 제대로 나와있지는 않았다. 예시로 올려준 https://github.com/WenchaoD/FSCalendar/blob/master/Example-Swift/FSCalendarSwiftExample/InterfaceBuilderViewController.swift 이 파일을 참고하여 기능을 구현하였다. fileprivate let datesWithCat = ["20211201","20150605"] // 특정 날짜에 이미지 세팅 func calendar(_ calendar: FSCalendar, imageFor date: Date) -> UIImage? { let imageDa..
옵셔널 체이닝 옵셔널 체이닝은 옵셔널에 속해있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정이다. 옵셔널을 반복 사용하여 옵셔널이 자전거 체인처럼 서로 꼬리를 물고 있는 모양이기 때문에 옵셔널 체이닝이라고 부른다. 중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 결과적으로 nil을 반환한다. 옵셔널 체이닝은 프로퍼티나 메서드, 서브스크립트를 호출하고 싶은 옵셔널 변수나 상수 뒤에 물음표를 붙여 표현한다. 옵셔널이 nil이 아니라면 정상적으로 호출될 것이고, nil이라면 nil을 반환할 것이다. let yagom: Person = Person(name: "yagom") if let roomNumber: Int = yagom.address?.b..
접근제어 접근제어는 코드끼리 상호작용을 할 때 파일 간, 모듈 간에 접근을 제한할 수 있는 기능이다. 접근제어를 통해 코드의 상세 구현은 숨기고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 접근제어의 필요성 객체지향 프로그래밍 패러다임에서 캡슐화, 은닉화를 구현하는 이유는 외부에서 보거나 접근하면 안 되는 코드가 있기 때문이다. 불필요한 접근으로 의도치 않은 결과를 초래하거나 꼭 필요한 부분만 제공해야 하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용한다. 모듈과 소스파일 스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계되었다. 모듈은 배포할 코드의 묶음 단위이다. 하나의 프레임워크나 라이브러리, 애플리케이션이 모듈 단위가 될 수 있다. import 키워드를 통해 불러온다. 소스..