분류 전체보기 57

[Swift] 클래스 vs 구조체,열거형

# 클래스(Class) 전통적인 OOP 관점에서의 클래스입니다. 클래스는 단일상속이 가능하고 *참조 타입입니다. Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있습니다. (참조 타입 - Reference Type : 데이터를 전달할 때 메모리 위치를 전달합니다.) # 구조체(Struct) C언어 등의 구조체보다 다양한 기능을 가지고 있습니다. 구조체는 상속이 불가능하고 *값 타입입니다. Swift의 대부분의 큰 뼈대는 모두 구조체로 구성되어 있습니다. (값 타입 - Value Type : 데이터를 전달할 때 값을 복사하여 전달합니다.) # 열거형(Enum) 다른 언어의 열거형과는 많이 다른 존재입니다. 열거형은 상속이 불가능하고 값 타입입니다. 유사한 종류의 여러 값을 유의미한 이름으..

Swift 2018.05.04

[iOS] 셀렉터(Selector)란

# 셀렉터(Selector) - 함수를 직접 지정하는 기능을 가진 일종의 함수 선택자 Selector는 본래 Objecive-C에서 클래스 메소드의 이름을 가르키는 데 사용되는 참조 타입입니다.동적 호출 등의 목적으로 @selector() 어트리뷰트 메소드 이름을 인자값으로 넣어 전달하면 이를 내부적으로 정수값으로 매핑해서 처리하는 형태입니다. 이것이 Swift로 넘어오면서 구조체 형식으로 정의되고, #selector()구문을 사용하여 해당 타입의 값을 생성할 수 있게 되었습니다. Swift4부터는 Selector 타입으로 전달할 메소드를 작성할 때 반드시 @objc 어트리뷰트를 붙여주어야 합니다. 이는 Objective-C와의 호환성을 위한 것으로, Swift에서 정의한 메소드를 Objective-C에..

iOS 2018.05.02

[iOS] CocoaPods이란

# CocoaPods이란 코코아팟(CocoaPods)은 코코아 프로젝트에 대한 의존성 패키지를 관리하는 도구 중 하나입니다.쉽게 말해 애플 코코아 개발 환경에서 진행되는 애플리케이션 프로젝트에 필요한 외부 라이브러리를 간단하게 설치할 수 있도록 도와주는 유틸입니다. # CocoaPods 설치 명령어 -> sudo gem install cocoapods (gem : 코코아팟은 루비로 만들어진 프로그램입니다. 루비용 패키지 관리 도구인 gem을 이용해서 설치하는 것입니다.) 참고 : 꼼꼼한 재은씨의 스위프트 실전편잘못된 부분 있으면 댓글 달아주세요!

iOS 2018.04.30

[Common] 프로세스(Process) vs 스레드(Thread)

# 프로세스(Process) vs 스레드(Thread) 프로세스-> 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말하며, 운영체제로 부터 자원을 할당(주소 공간, 파일, 메모리 등)받은 작업의 단위 스레드스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위를 말하며, 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있습니다.

Common 2018.04.29

[Common] RESTful API란

RESTful API(Representational State Transfer) - HTTP를 위한 아키텍처의 한 형식 REST는 네트워크 프로토콜이 아닙니다. 단지 네트워크 자원을 정의하고 자원에 대한 주소를 관리하는 방법에 지나지 않습니다. 쉽게 말해, REST란 웹 콘텐츠나 데이터를 HTTP기반으로 간단히 주고 받기 위해 정의된 간단한 형식의 인터페이스입니다. 일정 규칙에 따라 작성된 메시지를 HTTP프로토콜을 통해 주고받는 것이 전부입니다. 더 쉽게 말하면, 클라이언트는 네트워크를 통해 특정 데이터를 요청하는 메시지를 서버에 전달하고, 서버에서는 이를 처리한 결과값을 응답 메시지에 담아 회신합니다. 마치 특정 웹 페이지를 요청하기 위해 웹 브라우저에 URL을 입력하는 것과 거의 동일합니다. RES..

Common 2018.04.29

[Common] JSON이란

JSON (JavaScript Object Notation) - 자바스크립트 언어에서 객체의 속성을 표현하기 위한 방법입니다. JSON에 사용되는 데이터 구조는 크게 두 가지 종류로 나눌 수 있습니다. 하나는 여러 가지 속성을 키 - 값 형태로 정의할 수 있는 집합 구조이며, 또 다른 하나는 비슷한 성격의 객체가 반복되는 리스트 구조입니다. 집합 구조를 정의할 때에는 중괄호가 사용됩니다. { 키 : 값, 키 : 값 … } 리스트 구조를 정의할 때에는 대괄호가 사용됩니다.[객체 1, 객체 2, 객체 3 … ]

Common 2018.04.29

[Swift] guard vs if

프로그래밍을 하다보면 조건문은 종종 depth가 길어져 복잡도를 높이는 원인이 되곤 합니다. 이러한 문제점을 피하기 위해 Swift 2.0에서 guard가 등장했습니다. guard vs if guard문은 후속 코드들이 실행되기 전에 특정 조건을 만족하는지 확인하는 용도로 사용합니다. else블록에는 이후의 코드 진행을 막는 return, break가 삽입되어야 하고 주로, 실행 흐름을 종료하기 위한 목적으로 주로 사용합니다. 반면에 if문은 조건이 참인 경우에 후속 코드를 실행하지 않는 코드가 삽입되어야 합니다. 옵셔널 바인딩시 차이점 guard, if문과 옵셔널 바인딩할 때의 차이점은 바인딩을 하는 변수와 상수의 scope입니다.

Swift 2018.04.27

[iOS] 콘텐츠 뷰 컨트롤러, 컨테이너 뷰 컨트롤러

콘텐츠 뷰 컨트롤러콘텐츠 뷰 컨트롤러는 이미지나 텍스트, HTML페이지 등 앱의 화면에 표현할 콘텐츠를 관리하는 컨트롤러입니다. 이를 위해 콘텐츠 뷰 컨트롤러는 화면 전체 사이즈의 루트 뷰를 내장하고 있으며, 이 뷰 위에 각종 콘텐츠를 얹어 화면에 출력합니다. 뷰 컨트롤러를 정의하는 기본 클래스는 UiViewController입니다. UiViewController를 상속받아 새로운 커스텀 뷰 컨트롤러를 정의하고, 스토리보드에 구현된 화면과 연결합니다. 이 때 커스텀 뷰 컨트롤러에 작성한 커스텀 코드는 스토리보드의 화면을 제어하여 우리가 원하는 대로 앱이 동작할 수 있도록 해줍니다. 커스텀 뷰 컨트롤러를 정의할 때에는 기본 화면 구조를 어떻게 설계할 것인가에 따라 상속받을 부모 클래스를 상황에 맞게 적절히..

iOS 2018.04.26

[iOS] 뷰 - Frame, Bounds 속성

frameframe속성은 뷰 자신의 위치나 크기 등 영역을 설정하는 경우에 사용합니다. (frame의 좌표 기준은 슈퍼 뷰입니다.) boundsbounds속성은 뷰의 내부에 있는 객체와의 관계에서 사용합니다. (bounds의 좌표 기준은 자기 자신입니다.) 주로 뷰 내부에 서브 뷰를 추가하기 위해 (0,0)의 원점 좌표가 필요할 때, 혹은 뷰 내에서 터치 이벤트가 발생한 위치를 판별해야 할 때 사용합니다. 정리 슈퍼 뷰가 서브 뷰에게 제공하는 좌표는 bounds 속성의 좌표이고, 서브 뷰는 이 좌표를 기준으로 자신의 frame속성을 설정하는 것. 참고 : 꼼꼼한 재은씨의 스위프트 실전편잘못된 부분 있으면 댓글 남겨주시면 감사하겠습니다.

iOS 2018.04.26