개발/iOS
-
extension개발/iOS 2020. 11. 23. 15:39
swift의 extension 은 클래스나 프로토콜에 새로운 함수를 추가해주는 기능을 제공한다. 일반적인 경우 클래스에 새로운 함수를 추가할 때 클래스를 수정하면 되지만 import 해서 사용중인 클래스의 경우에는 수정 할 수가 없다. 클래스는 수정 할 수 없으나 범용적으로 사용하는 함수의 경우에는 extension을 사용하면된다. 예를들어 아래 코드처럼 둥근 빨간 버튼을 만드는 경우 이렇게 구현을 하면 가능하긴 하나 매번 이런식으로 만들어야되면 코드의 가독성이 떨어진다. 이런 경우 extension을 이용해 UIButton 클래스에 새로운 함수, makeCircular를 만들 수 있다. 이러면 앞서 둥근 버튼을 만들기 위해 실행한 코드를 하나의 함수에 넣고 호출하는 식으로 해결 할 수 있다. UIBut..
-
closure개발/iOS 2020. 11. 23. 13:37
프로그래밍 함수에서는 int, float 같은 데이터 타입 인자 뿐만 아니라 함수를 전달할 수도 있는데 swift에서도 동일하게 가능하다. 함수의 인자로는 이미 있는 함수를 넣을 수 있고 뿐만 아니라 클로저(closure)의 형태로 익명의 함수(anonymous)를 만들어서 쓰는 것도 가능하다. 예로 아래에 있는 코드들은 모두 동일한 기능을 하는데 함수를 전달하는 것과 다른 클로저 형태를 사용한 것만 다르다. 자바나 코틀린을 써본 사람들은 람다 함수라는 이름으로 이미 익숙할 것이다. func calculator (n1: Int, n2: Int, operation: (Int, Int) -> Int) -> Int { return operation(n1, n2) } func multiply(no1: Int, ..
-
segue개발/iOS 2020. 11. 23. 12:24
segue(세그웨이)는 swift에선 ViewController 간의 전환하는 용도로 사용하는 라이브러리인데 ViewController가 하나의 화면을 담당하므로 화면 전환을 위한 라이브러리라고 봐도 될 것 같다. segue 가 포르투갈어로 팔로우라는 뜻을 가지고 있으니 단어의 의미와 함께 용도를 기억하면 좋을 것 같다. 세그웨이는 뷰 컨트롤러간의 연결을 통해서 만들수 있다. 스토리보드에서 작업중인 두개의 뷰컨트롤러중 화면전환이 시작되는 곳에서 도착지점까지 컨트롤을 눌러서 쭉 끌어준다. 실제 코드에 바인딩 해줄때 처럼 말이다. 옮기고 나면 위 그림의 파란색 박스로 표시한 새로운 아이템이 생긴다. 클릭하면 오른쪽 상단에서 세부 속성을 정의해 줄 수 있는데 identifier와 종류를 선택할 수 있다. id..
-
protocol개발/iOS 2020. 11. 21. 16:19
protocol은 네트워크나 의전에서 주로 쓰이는 용어인데 swift에서는 네트워크와 의전에서 사용되는 의미랑은 조금 다른 차원인 것 같고 차라리 자바나 코틀린에서 사용하는 interface가 좀더 와닿는 느낌이며 실제로도 비슷한 역할을 한다(자바 개발자를 너무 오래해서 그런가). 이 포스트에서는 객체 지향적 관점에서 protocol을 왜 사용해야하는지를 설명하기 보다는 어떻게 쓰는지를 중점적으로 설명하고자 한다. protocol은 delegate 패턴을 쓸 때 사용하는 타입이다. delegate 패턴을 사용하는 예제 코드를 통해 protocol을 살펴보자. protocol AdvancedLifeSupport { func performCPR() } class EmergencyCallHandler { va..
-
Delegate개발/iOS 2020. 11. 21. 16:02
swift 언어에서 사용하는 delegate 패턴은 용어에도 담긴 의미 처럼 특정한 작업을 다른 클래스에 위임 할 때 사용하는 디자인 패턴이다. 프로그래밍을 처음 경험하는 사람들은 어렵게 느낄 수 있으나 다른 언어를 먼저 경험해본 사람들한테는 콜백과 비슷한 사용 용도라고 될 것 같다. UI 클래스에서 주로 사용하는데 UITextField 클래스에서 사용 예시를 한번 확인해보자. 위 그림의 상단에 사용자로부터 텍스트를 받을 수 있도록 UITextField를 만들어뒀다. 시뮬레이터에서 유저가 이 영역을 클릭하면 자동으로 키보드가 올라오게 되는데 UITextField만 추가하고 아무런 추가 작업이 없었다면 엔터에 해당하는 이동 버튼을 눌러도 아무런 응답이 없다. 엔터 명령에 대해서 어떤 클래스도 이 작업을 위..