본문 바로가기

전체 글257

[Swift] 오류처리(1) 거의 모든 언어에서는 발생할 수 있는 오류를 대비한 기능들이 존재한다. 물론 스위프트도 마찬가지이다. 예측가능한 오류들도 있을 수 있고 그러지 못한 오류들이 또 있을 수 있다. 이번 글과 다음글에서는 우리가 어떻게 이러한 오류들을 잘 처리할 수 있는지 알아보려고한다. 이번글과 다음글은 야곰님의 스위프트 프로그래밍(3판)의 내용과 docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html 을 참조해서 쓰는 글임을 밝힌다. 처음에는 어떻게 오류를 표현할 수 있는지를 봐야한다. 오류는 다음의 형식으로 표현이 가능하다(enum에 대한 개념은 꼭 아셔야 합니다.) 예시는 자판기에서 음료를 뽑을 때 발생할 수 있는 오류들을 열거형(enum)식으로 나열한 것이다. 중요한.. 2020. 8. 9.
[Swift] Map, Filter, Reduce 함수 알아보기 요즘 많은 IT직군에서 자기들이 쓰는 언어로 알고리즘 테스트를 본다. 만약에 안드로이드 개발을 원하는 사람들은 Java나 Kotlin으로 알고리즘 테스트를 볼 수 있고 IOS 개발을 원한다면 아마 Swift로 알고리즘 테스트를 볼 것이다. 또한 어떤 언어에서 알고리즘 테스트를 공부하던지 배열이 매우 많이 쓰이는 것을 알고 있을 것이다. 오늘은 배열에서 보다 간결하게 그 배열원소들을 정리할 수 있는 함수들을 알아보려한다. 3가지 모두 매우 중요하므로 잘 알아두자!! 1. map, filter, reduce 3가지 함수의 공통점 map함수와 filter함수 그리고 reduce함수의 공통점은 바로 매개변수로 함수를 받는 다는 것이다. 우리는 그리고 이러한 함수를 고차함수라고 부른다. 예를 들면 우리가 map함.. 2020. 8. 2.
[Swift] ARC에 관한 문제 해결하기(클로저에 관하여) 저번 시간에는 클래스를 참조하면서 발생할 수 있는 ARC와 관련된 문제점을 알아보고 약한 참조와 미소유 참조 등 다양한 해결책도 같이 알아보았다. 이번 시간에는 ARC에 관한 마지막 글로 이런 강한 참조 문제가 클로저 내부에서도 발생될 수도 있고 이러한 것을 해결하는 해결책도 같이 알아보려고 한다.(참조가 가능한 것은 클로저와 클래스가 있다.) 1. 문제 발생 원인 다음을 보면 HTMLElement라는 클래스 내부에 지연 저장 프로퍼티인 asHTML이 보인다. 그리고 그속에서 self.text와 slef.name 등이 사용되고 있는 것들도 보인다. 이것은 HTMLElement라는 클래스 내부의 하나의 프로퍼티인 asHTML 클로저내에서 자신이 속해 있는 클래스를 다시 참조하는 것이다. 그래서 우리가 만약.. 2020. 7. 25.
[Swift] ARC에 관한 문제 해결하기(클래스에 관하여) 저번 글에서는 ARC과정에서 생길 수 있는 문제점에 대해서 보았다. 대표적인 문제점은 바로 메모리 낭비가 일어난다는 것이었고 오늘은 어떻게하면 그 메모리 낭비를 하지 않을 수 있는지 그 해결책에 관해서 알아보려 한다. 1. 약한 참조를 이용하기(ex. weak var) 참조의 갯수를 파악에 대상이 되는 것은 강한 참조이다. 즉 강한 참조를 한다면 ARC가 그것을 알아차리고 클래스 인스턴스에 대한 참조의 수를 1증가시킬 것이다. 하지만 이렇게 1을 증가 시키지 않을 수 있는데 대표적으로는 약한 참조를 이용하는 것이다. 평소에 우리가 선언하는 변수나 상수는 자동으로 강한 참조를 하게 되어있다. 여기서 우리가 약한 참조로 바꾸기 위해서는 var 이나 let 앞에 weak이라는 것을 같이 선언해주면 그것은 더 .. 2020. 7. 19.