본문 바로가기
728x90
반응형

공부88

[스위프트] 델리게이트 패턴 (delegate) 갑자기 목디스크가 와버린 바람에 아무것도 못하고 거의 누워서 지내다 이제 좀 살만해진거 같아서 다시 글을 쓰려고합니다. 아직도 좀 저릿한데 전에 비하면 이정도면 전에비해 정말 너무너무너무너무 괜찮아진거라 행복할 정도. 암튼 각설하고, 스위프트에는 델리게이트라는 개념이 있다. 최근 계속 ios 네이티브 앱개발을 공부하고 있는데(유데미 안젤라 강의를 듣는중) 델리게이트 패턴과 api에 대한 내용이 나오게 되었다. 앞부분까지는 솔직히 좀 어려울 부분이 크게 없기도 하지만(강의를 볼때 영어 이해하랴 화면보랴 해서 좀 힘들긴 하지만) 드디어 델리게이트 패턴에 도달을 해버린것. 문제는 강의를 어떻게 꾸역꾸역 듣긴했는데 이해가 안되는 상태에서 예시를 작성하려니 죽을맛이다. 델리게이트 패턴이 뭔가 중요한건 알겠는데 뭐.. 2023. 8. 6.
[스위프트] 클로저(Closures) 스위프트에서 클로저라는 기능은 일회용 함수를 작성할 수 있는 구문이다. 작성방식은 워낙에 다양하지만 일회용으로 함수를 작성하다 보니 함수명이 필요 없어 익명함수라고 부르기도 한다. 클로저는 이미 다른 언어들에도 존재하는 기능인데, 다른 언어에서는 다음과 같이 부른다. 자바스크립트 - 익명함수 자바 - 람다함수 파이썬 - 람다함수 아마 대충 어떤 내용이 나올지 예상이 될 것이다. 원래 클로저 자체는 세 가지를 의미한다. • 전역함수 • 중첩함수 • 클로저 표현식 여기서 살펴볼 내용은 클로저 표현식에 중점을 둘 것이다. 클로저의 표현식 우선 클로저는 기본적으로 함수이기 때문에 함수의 기본적인 형태를 따르나 일회용이기 때문에 많은 부분이 생략된다. 차차 알아가 보자. //기본적인 형식 { (매개변수) -> 반.. 2023. 7. 10.
[스위프트] defer(디퍼) 스위프트에는 defer라는 구문이 있다. 앞서 얘기한 흐름 제어 구문중 하나인데 스위프트에 있는 특이한 기능중 하나이다. defer는 "연기하다"라는 뜻을 가진 단어로 이를 생각해보면 defer구문의 기능이 무엇일지 예상이 될 것이다. 바로 일부 기능을 지연시키고자 할때 쓰는 구문이다. 하지만 이는 몇초를 지정한다던가 이런게 아니다. defer는 if나 for처럼 블럭으로 작성한다. defer는 다음과 같은 특징들을 갖는다. • defer 블럭은 defer가 들어가있는 블럭에서 가장 마지막에 실행된다.(return 이후에 실행된다.) • 만약 defer블럭을 지나지 않고 return이 실행되면 defer는 실행되지 않는다. • defer블럭이 여러개가 있다면 마지막 defer블럭부터 거꾸로 실행된다. •.. 2023. 7. 10.
[스위프트] 함수(파트3) 파트 3에서 설명할 것은 좀 어렵다. 스위프트는 함수형 언어이다. 이를 설명하기 위해 우선 일급 객체에 대해서 알아보자. 일급 객체 객체가 다음의 조건을 만족하면 해당 객체를 일급 객체로 간주한다. 객체가 런타임에도 생성이 가능해야 한다. 인자값으로 객체를 전달할 수 있어야 한다. 반환값으로 객체를 사용할 수 있어야 한다. 변수나 데이터 구조 안에 저장할 수 있어야 한다. 할당에 사용된 이름과 관계없이 고유한 구별이 가능해야 한다. 일단은 함수도 객체이므로 위의 조건들을 함수가 만족할 경우 일급함수(First-Class Function라고 한다. 또한 해당 언어는 함수형 언어로 분류된다. 그래서 스위프트가 함수형 언어인 것이다. 이제부터 일급함수의 특성을 알아보자. 일급함수의 특성 (1) - 변수나 상수.. 2023. 7. 10.
[스위프트] 함수(파트1) 함수 대부분의 언어에서 지원하는 기능으로, 프로그램 실행시에 독립적으로 작동할 수 있는 부분을 분리해 구조화한 객체이다. 일종의 캡슐화라고도 할 수 있겠다. 이렇게 작성된 함수는 어디서든 간단하게 호출해 사용할 수 있다. 그래서 같은 내용으로 실행되야 한다면 여러번 작성할 필요없이 호출을 통해 같은 소스를 실행할 수 있다. 함수의 종류 함수는 일반 함수와 사용자 정의 함수로 나눠진다. • 일반함수 : 프로그래밍 언어나 프레임워크에서 제공하는 함수. 예시)print, isEmpty등등 • 사용자 정의 함수 : 일반 함수에서 제공하지 않아 사용자가 함수의 입력과 출력, 실행될 구문을 직접 정의해 만드는 함수. 예시)로그인 정보를 받을 시 수행될 내용. 사용자 정의 함수 앞서 말했듯 일반 함수에는 간단한 기능.. 2023. 7. 9.
[스위프트] 옵셔널(Optional) 옵셔널은 이전에 Objective-c에는 없던 새로운 개념으로 스위프트의 방향성을 보여주는 기능이기도 하다. 옵셔널은 언어 레벨에서 안정성을 높이기 위해 도입한 개념으로 "값이 없을 수도 있는 데이터"를 표현하기 위한 기능이다. 여기서 우리가 중요하게 생각해야 할점은 바로 옵셔널은 에러를 막기 위해 만들어진 것이다. 아마 이렇게 생각할 수도 있다. '그냥 값이 없을수도 있는거 아닌가?' 물론 맞는 말이긴 한데 옵셔널은 값이 없음으로 인해 에러가 발생할 수 있는걸 막기 위해 존재한다는걸 생각하면 위에서 말한 "옵셔널은 에러를 막기위해 만들어진 것"이라는 말이 이해가 될 것이다. 값이 있다면 Optional(값)으로 반환되며 만약 해당 데이터에 값이 없다면 nil이 출력된다. 옵셔널 타입은 별도로 존재하지않.. 2023. 7. 8.
728x90
반응형