WooKoo Blog

물과 같이

분류 전체보기 123

[Swift] - Generic(제네릭)

Generic 사전적 뜻은 포괄적인, 총칭의 Int a와 Int b 의 값을 바꿔주는 함수가 있다고하자. 만약 a, b의 값이 double이라면? 새로 함수를 만들어야한다. String 타입이라면? 또 함수를 만들어줘야한다. a와 b의 타입에 따라서 함수 파타미터 타입을 결정해줄 때 사용한다. 함수가 호출 될 때 타입이 결정된다는 뜻!! 예시 func swapTwoValue(_ a: inout T, _ b: inout T){ let temporaryA = a a = b b = temporaryA } 파라미터의 T는 타입 파라미터라고 부르고 함수 이름 옆 는 Placeholder 타입 이름이다. 가 지금은 하나지만 여러개를 쓸 수 있다. ","로 구분하면 된다. 만약 특정 제약을 주고싶다면 , 과 같이 타..

개발/개발 2020.05.28

[iOS] - Hashable Protocol 은 무엇일까요???

Hashable 정수 Hash 값을 제공하는 타입의 프로토콜 해시란? 고정된 길이의 데이터로 매핑 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에서 사용한다 중복되는 레코드도 검색 가능 Set 또는 Dictionary의 Key로 Hashable을 준수하는 모든 타입을 사용 할 수 있다. Swift에서 Dictionary는 Dictionary 형태로 쓰인다. 유일한 제약사항이 있는데, 반드시 keyType은 해쉬가능한 타입이어야한다.(hashable) 즉 그 자체로 유일하게 표현이 가능한 방법을 제공해야한다. swift의 기본 타입(String, Int, Double 등) 기본적으로 해쉬가 가능해 Dictionary의 KeyType으로 사용이 가능하다. *해쉬의 값은 프로그램 실행에 따라 동일 하지 않을..

개발/개발 2020.05.27

[iOS] - GCD란???

iOS에서는 쉽고 편한 멀티 스레딩 처리를 위해 두가지 API를 제공합니다. 1. GCD(Grand Central Dispatch)라는 C기반의 저수준 API 2. NSOperation이라는 Obj-C 기반의 고수준 API 2번은 1보다 약간의 오버헤드가 더 발생하고 느리다. GCD를 사용하기전에 알아야할 클래스 DispatchQueue이다. 실제로 해야할 Task를 담아두면 선택된 스레드에서 실행해준다. DispatchQueue는 2가지로 나뉜다. 1. Serial Dispatch Queue - 등록된 작업을 한번에 하나씩 차례대로 처리합니다. 처리중인 작업이 완료되면 다음 작업을 처리합니다. 2. Concurrent DisPatch Queue - 등록된 작업을 한번에 하나씩 처리하지 않고 여러 작업들..

개발/개발 2020.05.27

[iOS] - 코코아 터치 프레임워크란?

코코아라는 단어는 NSObject를 상속받는 모든 클래스, 모든 객체를 가리킬 때 사용한다. 왜 코코아냐면 자바가 커피원산지에서 따온 이름이라서 애플 개발자는 어린이도 할 수 있는 의미에서 코코아라고한다. 여담이었고 코코아 터치 프레임워크란 iOS 개발 환경을 구축하기 위한 최상위 프레임워크다. 이름이 비슷한 코코아 프레임워크는 macOS 개발을 위한 프레임워크이며 아이폰, 아이패드의 터치 기반의 iOS개발 환경에 사용하여 코코아 터치 프레임워크라고 이름이 붙었다. UIKit만 import 했음에도 Foundation 을 사용할 수 있는 이유는?? 기본적인 코코아 프레임워크는 아래와 같은 계층 구조를 갖는다. 하위 계층일수록 하드웨어에 가깝고, 상위 계층일수록 사용자에게 가깝다. 그중 UIKit은 가장 ..

개발/개발 2020.05.27

[iOS] - Foundation Kit이란?

Foundation 프레임워크란 코코아 터치 프레임 워크에 포함된 프레임워크다! 코코아 터치 프레임워크는 애플에서 제공하는 기본 프레임워크 Foundation은 원시 데이터 타입(String, Int, Double), 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스를 사용해 애플리케이션의 기본적인 기능을 관리한다. - Foundation에는 데이터 타입, 날짜 및 시간, 필터 및 정렬, 네트워킹 등의 기본 기능을 제공한다. -Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터 타입은 iOD, MacOS, tvOS 등 모든 애플의 SDK에서 쓰인다. 기능들 기본 - Number : Data, String : 원시 데이터 타입 사용 - Collection : Ar..

개발/개발 2020.05.27

[iOS] - 강한참조 약한 참조(Strong capture and weak capture)

Hacking with swift 를 진행하다가 나온 내용이라 부족함을 느껴 따로 공부해보는 시간을 갖겠다. 먼저 Swift ARC(Auto Reference Counting) 이라고해서 컴파일 시점에서 다시 사용할 메모리 소스들을 자동으로 삽입해준다. 가비지 컬렉터와 달리 참조 사이클을 자동으로 처리해주지 않기 때문에 메모리 누수가 발생 할 수도 있다. 서로 다른 객체가 서로를 참조하면 순환 참조가 계속되 메모리가 해제되지않고 메모리 누수가 발생한다. 이것을 해결하기 위한 것이 weak 과 unowned이 있다. 이 차이점은 weak키워드는 optional에 사용할 수 있으며, unowned는 non-optional인 경우에만 사용 가능합니다. 따라서 unowned는 옵셔널 추출이 필요하지 않지만, 참..

개발/개발 2020.05.08

[iOS] - 뷰컨트롤러 간 값 전달/직접전달방식(동기방식)

뷰 컨트롤러 간 데이터를 공유하는 방식에 대해서 알아보자. 크게 두가지 방식이 있는데 미리 만들어둔 변수를 이용하여 직접 값을 전달하는 1. 직접 전달 방식(동기방식) 공유소나 저장소에 저장하여 필요할 때 꺼내오고 저장하는 2. 간접 전달 방식(비동기 방식) 이 있다. 1의 방법의 경우 받는 뷰 컨트롤러에서 받아야할 데이터들의 명세를 미리 정의해주어야하고 2의 방법의 경우 저장소 위치를 공유하고 있어야한다. 오늘은 1번의 방법을 통해서 데이터를 주고 받는 과정을 알아볼 것이다. 먼저 사진과 같이 1VC를 만들어 준다. 위에서 부터 텍스트 필드, 스위치, 스테퍼, 버튼이다. 이후 2VC도 만들어주며 버튼을 제외한 나머지는 다 Label들이며 화면 전환 시 데이터들에 따라 값이 변경 될 예정이다. 먼저 1...

개발/개발 2020.01.10

[iOS] - SQLite3 기존 DB 사용하기

으아아아아악! 나는 영어 사전 어플을 만들기 위해서 영어 사전이라는 DB를 어플리케이션을 동작할 때 넣어줘야했다. 결론적으로는 해결을 했다. 해당 시뮬레이션 기기마다 경로가 달라서 DB파일을 어떻게 넣어줘야하는지 몰랐는데 만들어둔 DB를 시뮬레이터가 돌아갈 때 새로운 DB를 만들어 Copy해주는 방법을 사용해야했다. 어떻게 하는지 알아보자. 먼저 제작한 데이터 베이스를 프로젝트 폴더 안에 넣어주자. 이런 식! 그 후에는 https://github.com/stephencelis/SQLite.swift stephencelis/SQLite.swift A type-safe, Swift-language layer over SQLite3. Contribute to stephencelis/SQLite.swift de..

개발/개발 2019.12.01

[iOS] - Alert 알림창 띄우기 (actionSheet Style) - 2

https://lazyowl.tistory.com/19 [iOS] - Alert 알림창 띄우기 (Alert Style) - 1 Alert iOS 개발을 많이 하다보면 알림창을 띄우는 경우가 많은데 UIKit에서 제공하는 알람창 쓰는 방법을 알아보도록 하겠습니다. UIKit 에서 Alert와 ActionSheet 이렇게 두가지가 있는데 이 포스트에서 lazyowl.tistory.com 이전 글에서는 알림창에서 alert 띄우는 방법을 알아보았는데 이번엔 actionSheet에 대해 정리해보겠습니다. (스타일만 바꿔주면 되는 AlertController 에서 style 을 actionSheet 로만 해주면 돼요.. 나머지 똑같음) 먼저 액션 시트는 이런거에요. 이런거 많이 보셨죠??? 지난 방법과 사용법은 ..

개발/개발 2019.11.19

[SwiftUI] - Tutorial Section6 - Apple

2019/10/20 - [iOS/개발] - SwiftUI Tutorial Section5 - Apple SwiftUI Tutorial Section5 - Apple 2019/10/19 - [iOS/개발] - SwiftUI Tutorial Section4 - Apple SwiftUI Tutorial Section4 - Apple 2019/10/19 - [iOS/개발] - SwiftUI Tutorial Section3 - Apple SwiftUI Tutorial Section3 - Apple 2019/10/18.. lazyowl.tistory.com Section 6 Compose the Detail View Step1 이전 스텝에서 만들었었던 ContentView.Swift 파일로 이동해보자. Step2 ..

개발/개발 2019.10.24