분류 전체보기

Swift

[Swift] 고차함수(1) - forEach, filter, reduce

고차함수(Higher-order-function)중 forEach, filter, reduce에 대해 알아 보겠습니다. forEach for-in과 동일하게 각각의 Element들을 호출 합니다. Declaration func forEach(_ body: (Int) throws -> Void) rethrows Example let array = [1,2,3,4,5] for num in array { print(num) } //1 //2 //3 //4 //5 array.forEach { print($0) } //1 //2 //3 //4 //5 차이점 forEach에서는 break, continue 구문을 사용할 수 없고, return을 통해서 빠져나갈 수 있습니다. (continue처럼 동작함) for-i..

iOS

[iOS] ContentOffset과 ContentInset

ContentOffset과 ContentInset의 개념에 대해 알아보겠습니다. ContentOffset contentOffset은 point입니다. 즉, x, y좌표를 의미하는것으로써 스크롤을 한다는 것 자체가 contentOffset이 변한다는 의미입니다. contentOffset이 변하면 스크롤된다! 스크롤뷰에 이미지를 올려놓은 화면입니다. 스크롤뷰의 contentOffset을 조절해보겠습니다. 예제는 간단하게 y좌표만 150씩 더해보도록 해서 y좌표를 이동시키는 버튼입니다. @objc func moveContent() { let newOffset = CGPoint(x: scrollView.contentOffset.x, y: scrollView.contentOffset.y + 150) scrollV..

iOS

[iOS] ScrollView

ScrollView 이벤트와 델리게이트에 대해 알아 보겠습니다. ScrollView 화면의 크기보다 더 큰 콘텐츠의 크기를 가진 컨텐츠를 표현하기 위한 뷰 입니다. 스크롤 뷰의 크기와 콘텐츠의 크기 뷰의 크기는 프레임(frame)을 이용해서 뷰 자체의 크기를 얻어 올 수 있습니다. 스크롤 뷰의 경우에는 콘텐츠의 크기와 스크롤 뷰에 나타나는 위치 정보를 다뤄야합니다. Content size : CGSize 구조체를 사용하고 콘텐츠의 크기를 설정 Content offset : CGPoint 구조체를 사용하고 콘텐츠가 스크롤 뷰에 표시되는 위치를 설정합니다. 곧 Bounds의 X좌표, Y좌표를 의미하는 것으로서 스크롤을 한다는 자체가 ContentOffset이 변하는 것입니다. Content inset : U..

iOS

[iOS] Photos Framework

Photos framework와 사용법에 대해 알아 보겠습니다. Photos 프레임워크 UIImagePickerController는 사용자가 카메라나 앨범에서 직접 사진을 고르는 방식으로 이미지를 얻어 오는 반면, photos 프레임워크는 UI를 이용한 사용자의 조작 업이 iOS에서 iCloud사진 라이브러리를 포함하여 사진 및 비디오에 직접 접근할 수 있습니다. 포토 프레임 워크를 사용하려면 Photo Framework를 직접 추가 합니다. 그 이후 import를 작성 합니다. import Photos Photos 프레임워크 모델 클래스에는 PHAsset, PHAssetCollection, PHCollectionList 3가지가 있습니다. 1. 애셋과 콜렉션 PHAsset 이미지, 비디오, 라이브 포토..

Swift

[Swift] 프로토콜 지향 프로그램 - 2 (델리게이션 및 프로토콜 설계)

델리게이션 및 프로토콜 컴포지션에 대해 알아 보겠습니다. 델리게이션 델리게이션은 어느 한 타입의 인스턴스가 다른 인스턴스를 대신해서 동작하는 상황에 잘 맞는다. 동작을 위임하는 인스턴스는 델리게이트 인스턴스의 참조를 저장하고 있다가 어떠한 동작이 발생하면 델리게이팅 인스턴스는 계획된 함수를 수행하기 위해 델리게이트를 호출 합니다. 예제 프로토콜 구현 protocol DisplaynameDelegate { func displayName(name: String) } 델리게이트를 사용하는 Person구조체 struct Person { var displaynameDelegate: DisplayNameDelegate var firstName = "" { didSet { displaynameDelegate.disp..

Swift

[Swift] 프로토콜 지향 프로그램 - 1 (프로토콜이란)

Protocol-Oriented-Programming을 알아볼텐데 먼저 Protocol의 개념에 대해 알아보도록 하겠습니다. 프로토콜이란 프로토콜 정의 스위프트2를 소개하면서 세계 최초의 프로토콜지향 프로그래밍 언어라고 애플은 발표했다. 이런 이유로 프로토콜이 프로토콜지향 프로그램잉의 전부일 것이라고 생각할 수도 있으나, 이는 잘못된 생각이다. 프로토콜지향 프로그래밍은 단지 프로토콜뿐만이 아니라 더 많은 것을 포함하고 있습니다. 타 언어의 인터페이스와 유사하지만, 프로토콜은 대부분의 객체지향 언어에 있는 인터페이스보다 실제로는 훨씬 더 강력합니다. 그럼 프로토콜의 기초부터 시작해볼까요. 프로토콜 정의 프로토콜 정의를 위해서는 protocol키워드를 사용한다. protocol MyProtocol { //프..

iOS

[iOS] iOS Realm이란?

Realm대한 사용방법과 CRUD 예제를 만들어보면서 Realm에 대해 알아보겠습니다. Realm이란? 오픈소스로 모바일에 최적화된 데이터베이스 라이브러리 입니다. ORM이 아닌 데이터컨테이너 모델을 사용하고 데이터객체는 Realm에 객체로 저장됩니다. Performance 프로젝트 만들기 간단한 CRUD예제를 만들어 보면서 Realm에 대해 알아 보도록 하겠습니다. 만들화면 먼저 코코아팟에 pod ‘RealmSwift’ 추가해줍니다. Realm? Realm은 객체 컨테이너로 동작하기 때문에 Object를 생성 해야됩니다. 클래스(class)로 구성되며, @objc dynamic을 변수 앞에 적어줘야됩니다. 준비 과정 모델링의 데이터 변수 선언 Realm 변수 선언 var items: Results? /..

Swift

[Swift] 프로토콜 지향 프로그래밍(Protocol-Oriented Programming)

프로토콜 지향 프로그래밍(Protocol-Oriented Programming) in Swift에 대해 알아 보겠습니다. 애플은 2015년 WWDC에서 스위프트를 발표하면서 스위프트 언어는 프로토콜 지향 언어(Protocol-Oriented Language)라고 발표 했습니다. 흔히 알고 있는 객체 지향 프로그래밍(Object-Oriented Programming)이라고 하면, 사물을 객체로 형성하여 공통점을 갖는 모든 곳에서 상속받는 객체 내부의 모든 로직을 캡슐화합니다. 의도 하지 않아도 상속했다는 이유로 모든 속성과 행위를 공유해야하며, 복잡한 상속 구조를 지닌 클래스를 상속했다면 원하는 클래스를 참조해야 할때 다운캐스팅을 해야 합니다. 또한 가장 큰 단점은 단 하나의 SuperClass만 상속할 ..

Swift

[Swift] Magnitude, Abs

Magnitude, Abs의 차이점에 대해 알아 보겠습니다. Swift에서 제공하는 API중에 절대값을 리턴해주는 방법에는 2가지(Magnitude, abs)가 존재합니다. 둘다 절대값으로 변경해준다는 기능이 있지만, 차이점이 존재합니다. let integer = Int(-15) let magnitudeNum = integer.magnitude // 15 let absNum = abs(integer) // 15 magnitude는 위의 소스와같이 property 특성을 가지고 있고, UInt로 타입이 변하게 됩니다. abs는 메서드 형식이며, Int의 타입으로 리턴을 하게 됩니다. magnitude와 abs차이점 magnitude는 UInt로 변환, abs는 Int로 변환 특별하게 UInt를 필요로 하지..

Swift

[Swift] 서브스크립트(Subscript)

서브스크립트(Subscript)에 대해 알아 보겠습니다. 서브스크립트 서브스크립트는 Class, Struct, Enum에서 콜렉션, 순열, 리스트 등의 멤버 요소에 쉽게 접근하기 위한 방법입니다. 인스턴스의 이름 뒤에 대괄호로 감싼 값을 써줌으로써 인스턴스 내부의 특정 값에 접근할 수 있습니다. 설정자(Setter)와 접근자(Getter)메서드를 구성하지 않고도 인덱스를 통해 어떤 값을 빠르게 설정하거나 가져올 수 있습니다. 예를들어 arr이라는 Array 인스턴스의 index를 통해 해당 인덱스의 값에 접근하고 싶다면 arr[index]라고 표현해서 쓴것들이 서브스크립트 입니다. Subscript Syntax subscript키워드 사용. 서브스크립트를 구현하는 코드는 각 타입의 구현부 또는 타입의 익..

jinnify
'분류 전체보기' 카테고리의 글 목록 (5 Page)