목록Swift (89)
BOID
안녕하세요 HoonIOS입니다 :) 스위프트 버전 2.0을 발표하면서 스위프트는 프로토콜 지향 언어라고 말을 했는데요 그럼 프로토콜 지향 언어는 무엇인지에 대해 알아보겠습니다. 스위프트 표준 라이브러리를 보면 타입과 관련된 소스는 클래스 형태가 아니라 구조체 형태로 되어있는 것을 확인할 수 있습니다. 여기서 많은 분들이 의심을 가질께 구조체 형태면 상속이 되지 않는데 어떻게 그렇게 많은 기능을 구현하지?라는 의문을 가지 실수 있습니다. - 이 해답은 프로토콜. 익스텐션, 제네릭이 있습니다. ( 익스텐션이란? , 제네릭이란? ) 프로토콜이란? - 아직 프로토콜은 포스팅을 하지 않아서 간단히 설명해 보겠습니다. - 프로토콜에 정의한 프로퍼티, 메소드는 필수 정의해야 하는 조건입니다. - 타입마다 해당 프로토..
안녕하세요, HoonIOS입니다. :) 저번 시간에 뷰 컨트롤러, 뷰에 대해 알아봤는데요, 그래서!!! 이번에는 뷰 컨트롤러의 상태가 켜지고 꺼지는 같은 상태변화와 생명주기를 알아보려고 합니다. 뷰 컨트롤러 상태변화 앱의 생명주기 - Not Running( 앱이 아직 실행되지 않았거나, 완전히 종료된 상태 ) - Inactive( 앱이 실행 중이지만 사용자로부터 event를 받을 수 없는 상태, 홈버튼을 누르면 앱이 background로 가는데 이상태를 의미합니다. ) - Active( 앱이 실행중이고 사용자로부터 event를 받을 수 있는 상태) - Suspend( 앱이 백그라운드 상태에 진입했을떄 다른 작업을 하지 않으면 Suspend 상태로 진입하게 됩니다, 메모리에 관련 데이터만 저장되어 있는 상..
안녕하세요 HoonIOS입니다 :) 저번에는 뷰, 윈도우, 대략적인 뷰컨트롤러에 대해서 포스팅을 했는데요 이번에는 저번에 대략적으로 설명만 했는데 이번에는 뷰컨트롤러에 대해 그리고 네비게이션 컨트롤러, 테이블 뷰 컨트롤러 등 많은 뷰컨트롤러들이 있는데요. 각 컨트롤러에 대해 설명을 드리고자 합니다. 뷰 컨트롤러 - 뷰컨트롤러는 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 뷰컨트롤러를 가지고 있습니다.( 뷰컨트롤러는 앱의 기본중의 기본이니 개념 중요해요!) - 뷰컨트롤러의 주된 역할은 화면 구성 요소들, 즉 뷰를 관리 하는거지만 화면과 데이터 사이의 상호 작용관리까지 합니다. - 윈도우 객체로 부터 전달된 이벤트를 받아서 내부적으로 구현된 비즈니스 로직을 실행하고, 그 결과로 얻어진 데이터를 ..
안녕하세요 HoonIOS입니다 :)오늘은 iOS에서 중요한 기본중의 기본, 기초중의 기초인 인터페이스의 표현 구조인 윈도우, 뷰 뷰컨트롤러에 대해 알아보겠습니다. 윈도우와 뷰-모바일은 데스크톱과 달리 디바이스 스크린에 꽉 들어차는 하나의 화면을 표시할수 있으며, 다른 프로그램이 실행되면, 기존의 화면은 내려가고 그 자신을 새로운 화면이 대신 채우게 됩니다. (안드로이드는 멀티윈도우가 되는걸로 알고있지만 iOS는 한 화면에 두개의 프로그램을 동시에 사용을 못하는것을 생각하시면 됩니다.) 이런 일련의 과정을 구현하는데 윈도우, 뷰를 사용이 됩니다. - 그럼 이제 윈도우와 뷰의 개념에 대해 알아봐야겠죠!윈도우- iOS에서 디바이스의 스크린을 빈틈없이 채우기위한 객체로, 항상 유저 인터페이스 표현계층의 최상위에..
안녕하세요 HoonIOS입니다 :) 저번에는 제네릭의 개념과 제네릭 함수, 타입, 타입 확장에 대해 알아봤는데요, 이번에는 타입 제약 즉 특정 타입에 한정되게 제약을 두는 것과 프로토콜과 서브 스크립트에서 제네릭을 사용하는 것에 대해 알아보겠습니다. 제네릭의 타입 제약 - 앞 포스팅에서는 제네릭 타입 제약을 받지 않는 제네릭 함수를 구현해 보았는데, 만약 특정 타입에서만 한정되어야 할 처리가 있다던가, 제네릭 타입을 특정 프로토콜을 따른느 타입만 사용할 수 있도록 제약을 두어야 하는 상황이 있으면, 이때 타입 제약을 통해서 제약사항을 지정해 줄 수 있습니다. - 타입 제약은 클래스 또는 프로토콜에서만 줄수 있습니다. 이 말은 즉 타입 매개변수 자리에 사용할 실제 타입이 특정 클래스를 상속받는 타입이어야 ..
안녕하세요 HoonIOS입니다 :) 반가워요 이번에는 제네릭에 대해서 알아보겠습니다, 이 부분은 들어본 적은 있지만 개념을 잘몰라 공부를 해봤습니다. 그 내용을 한번 포스팅 해볼려고 합니다 재밌게 읽어주세요 ㅎㅎ 제네릭이란? - 제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있습니다. 또 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고 코드의 중복을 줄일 수 있기 때문에 추상적인 표현이 가능합니다. - 실제로 제네릭은 애플 표준 라이브러리에서도 많이 사용을 합니다. 예를들어, Array, Dictionary, Set 등의 타입은 모두 제네릭 컬렉션입니다. Int, String타입을 요소로 갖는 배열을 만들거나 그 외의 어떤 타입도 배열을 요소로 가질 수 있었던 것은 모두 제네릭 덕분..
안녕하세요 HoonIOS입니다 :) 저번에는 프레임워크, 코코아 터치 프레임워크를 알아봤습니다. 혹시 안 보셨다면 여기를 누르셔서 읽어보고 오시는 걸 추천드립니다 :) 프레임 워크 계층 관계에 대해 - 코코아 프레임워크나 코코아 터치 프레임워크를 구성하는 가장 작은 단위의 프레임워크들은 계층 관계를 이룬다고 합니다. - 우리가 주로 프래그래밍에 사용하는 것은 상위 레벨의 프레임워크들로, 프레임워크에서 상위계층에 해당합니다. 여기서 말하는 상위 계층이란? - 보다 사용자에 가깝고 구체적으로 구현되어 있어서 애플리케이션을 만들때 가장 손쉽게 사용할 수 있는 형태를 말한다, 이런 형태를 구체화되어있다고 표현을 합니다. - 이제 하위계층을 알아보자면 하위계층에 속한 프레임워크는 추상적이면서 하드웨어 쪽에 더 가..
안녕하세요 HoonIOS입니다 :) 이번은 swift의 extensions에 대해 공부를 해봤는데요, 제가 생각한 것보다 훨씬 포괄적이고 제가 모르는 부분이 많아서 포스팅을 했습니다. 그럼 한번 알아보겠습니다. extensions 란? * 애플 공식 문서에서 정의된 extensions - 공식문서에서 보면 새로운 함수적 기능을 class, structure, enumeration, or protocol type에 확장한다는 의미를 지니고 있습니다. - 익스텐션은 스위프트의 강력한 기능 중 하나로 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있다. - 스위프트의 익스텐션이 타입에 추가할 수 있는 기능은 다음과 같다. 연산 타입 프로퍼티/ 연산 인스턴스 프로퍼티 타입 메서드/ 인스턴스..