전체 글 (49) 썸네일형 리스트형 Swift - Closures Closure 코드 내에서 사용되고, 전달될 수 있는 어떠한 기능을 하는 블록. 타 언어의 람다와 비슷하다. 클로저는 정의된 문맥내에서 변수, 상수에 대한 레퍼런스를 캡처하고 저장할 수 있다. 이는 해당 상수, 변수를 Closing 하는것으로 알려져 있으며, Swift는 이러한 캡처의 모든 메모리 관리를 처리한다. 클로저는 다음과같은 세가지 형식을 취한다. 1. 전역함수 (Global Functions) : 이름이 있고, 어떠한 값들도 capture하지 않는다. 2. 내장 함수 (Nested Functions) : 이름이 있고 해당 내장함수를 둘러싸는 함수에 있는 값을 capture한다. 3. 주변 컨텍스트에서 값을 캡쳐할 수 있는 이름이 없는 클로저. 클로저 표현식은 명확성이나, 의도의 손실 없이 함수.. Swift - Control Flow 1. Control Flow Swift는 다양한 제어 흐름 명령문을 제공한다. While - 작업을 여러번 수행하는 루프 / if, guard, switch 등 특정 조건에 따라 코드의 다른 분기를 실행할 수 있고 break, continue등으로 다른지점에서 실행의 흐름을 전송할 수 있는 명령문 등을 제공한다. 또한 for - in 루프와 같이 특정 시퀀스를 단순하게 반복할 수 있는 방법도 제공한다. Swift의 다양한 흐름제어문은 튜플, 타입캐스팅, 간격일치(?)등과 같은 다양한 패턴들과 함께 매치될 수 있다. switch문 같은경우 case 본문 내 값을 상수, 변수에 바인딩할 수 있으며 where절로 복잡한 조건에 대해 표현할 수 있다. 2. For - In Loops 2.1 기본 문법 특정 시퀀.. Swift - 소켓 라이브러리를 사용하여 소켓 프로그래밍 해보기 (에코서버, 클라이언트 구현) 소켓 프로그래밍의 과정을 이해하기 위해 간단한 에코서버와 클라이언트를 구현하였다. BlueSocket이라는 라이브러리를 사용하여 구현하였다. BlueSocket을 사용한 에코 서버, 에코 클라이언트 구현 예제 에코 서버 소켓 클라이언트로부터 연결 요청을 받고 클라이언트가 보낸 메세지를 읽고, 같은 메세지를 보내는 서버이다. 서버 입장에선 여러 클라이언트들이 연결 요청을 할 수 있기 때문에 각 연결에 대하여 비동기적으로 진행하고 응답하도록 구현한다. 에코서버 구성요소 Listening Socket 프로퍼티 : 클라이언트 요청을 받는 리스닝 소켓 Connected Socket 프로퍼티: 현재 연결되어있는 소켓 딕셔너리, 키값은 socketfd이고 값은 Socket이다. run() 메서드: Server 실행을.. Swift - Colletion Types 1. Collection Types 스위프트는 값의 모음을 저장하기 위해 배열, 집합, 딕셔너리를 제공하기 위해 Collection Types를 제공한다. 배열(Array) : 정렬된 값들의 모음. 집합(Sets) : 정렬되지 않고, 유일한 값으로 이루어진 값들의 모음. 딕셔너리(Dictionary) : 정렬되지 않고, key - value 쌍으로 이루어진 값들의 모음. 스위프트의 컬렉션은 저장할 수 있는 값과 키 유형에 대해 항상 명확하기 때문에 잘못된 유형의 값을 컬렉션에 삽입할 수 없다. 1.1 Collection의 가변성 swfit의 컬렉션을 변수(var)에 할당하면, 생성된 컬렉션은 변경가능해진다. 이는 컬렉션에 항목을 추가, 제거, 젼경할 수 있다는 의미이다. 반대로 상수(let)에 할당하게 .. NSRunloop NSRunloop ? 윈도우 시스템으로 부터 오는 마우스, 키보드 이벤트 또는 NSPort입력 소스를 처리하는 객체입니다. 런루프는 스레드와 관련하여 근본적인 인프라의 일부 입니다. 런루프는 작업들을 스케줄링하거나, 입력이벤트들과 협력하기 위해 사용됩니다. 런루프의 목적은 수행해야할 작업이 있다면 스레드를 바쁜 상태로 놓고, 작업이 없다면 스레드를 휴식상태로 만들어 놓는데에 있습니다. Run loop Management는 완전히 자동이 아닙니다. 스레드의 코드가 적당한 때에 런루프를 시작할수 있고, incoming event에 대해 응답할 수 있도록 스레드 코드를 작성해야만 할 것 입니다. 런루프를 명시적으로 만들 필요는 없습니다. 어플리케이션의 메인스레드를 포함하여 각 스레드들은 관련된 런루프 객체를 .. [swift] 정규식을 활용하여 process 항목 추출하기 블로그를 자주 안하니 참 일기장 들여다보는기분....... 정규식이 항상 어려워서 피하다가 결국에 이번에 끝장을 보려고 공부해서 정리하겠다... 정규식 정규표현식 또는 정규식이라고 불리며 문자열에서 특정한 규칙을 가진 문자열의 집합을 표현하는 식이다. 특정 문자열에 원하는 규칙을 세운 정규식을 적용하면 원하는 문자열을 도출한다거나, 해당 문자열 안에 원하는 문자가 있는지 판별할 수 있다. 식이라고 생각하면된다. 처음엔 정규식 자체가 너무 외계어 같아 외면해왔으나....자주자주 마주하다보면 좀 친해지는 느낌을 받을 수 있을것이다. 그동안 정규식을 쓰기 싫어 spilit, contains같은 스위프트 문자열 함수만 즐겨 사용했으나 이번엔 해당 함수로만 처리할 수 없는 부분들이 많아 정규식을 사용하였다. 나도.. key Archiving in swift (아카이브 ,언아카이브) Key Archive에 대해서 알아보는 포스팅이다. 일단 필자는 Archive라는 단어 자체랑 서먹함을 느끼기 때문에 아카이브의 뜻을 짚고 넘어가겠다 보관소 라는 의미를 가진단다. 어떤 것을 보관한다거나 보관하는곳을 의미할때 쓰이는 단어로 추측이 된다. 그러면 스위프트에서 Archive라는 행위가 있을텐데 (그래서 이 포스팅을 쓰는것...) 어떤 클래스나 객체로 구현되어있을까? 공식문서의 Archive에 대한 설명을 살펴보자 Archives provide a detailed record of a collection of interrelated objects and values (아카이브는 상호 관련된 개체 및 값 모음에 대한 자세한 기록을 제공합니다.) -> 어떠한 객체에 관련된 자세한 값들을 저장한다는.. [Swift] Factory Pattern 팩토리패턴이란 무엇일까 처음 팩토리 단어 자체가 패턴이란 단어앞에 붙어있는것도 생소했기에 이 패턴을 이해하기엔 시간이 걸렸다. 일단 위키피디아의 팩토리패턴에 대한 정의를 보자 팩토리 매서드 패턴 객체 지향 디자인 패턴으로, 부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. ...뭔소린지 모르겠다. 팩토리 메서드 디자인 패턴이란, 객체를 생성하기 위한 인터페이스이고 대충 어떤 객체를 만드는데, 해당 객체를 만드는데에는 서브클래스가 결정한다는 것이다. 그 과정에서 '어떤 클래스'라는것의 내용을 감출 수 있다는것 같다. 정리하자면 팩토리 메소드는 객체를 .. 이전 1 2 3 4 5 6 7 다음