스위프트 .... 깊고도 깊은 .... 언어의 세계 Swift 공식 문서에 function리스트가 있길래 정리해보자 // https://swiftdoc.org/ 1. abs absolute value 절대 값 ! -100 을 100으로 2. assert - assert(, ) 위에서 사용한 x,y 변수를 사용했다. x = -100, y = 100 인 상태에서 assert( x == -100, "x가 -100이 아니다!")라고 작성한다. x == -100 이라는 조건에 만족하기 때문에 그냥 넘어간다. x를 100으로 변경하고 assert( x == -100, "x가 -100이 아니다!")를 실행한다. 그러면 Assertion failed메시지 x가 -100이 아니다 ! 가 뜬다. x == -100 이라는 ..
Swfit의 Shuffle( ) "Use the shuffle() method to randomly reorder the elements of an array."shuffle()은 배열의 순서를 랜덤화 하는 함수입니다. 시간 복잡도는 O(n)이네요. WWDC2018 Generic을보다가 shuffle()이 어떻게 구현되었는지 언급이 되길래 정리하고자 합니다. 사용된 fisher yates shuffle 알고리즘은 오래된 알고리즘입니다. 위에서 shuffle()은 배열을 랜덤화 할때 사용하는 함수라고 했으니array.shuffle()을 해주고 print를 찍어보면 잘 섞여서 나오는걸 확인할 수 있습니다.위 print문이 어떻게 찍혔는지 과정을 살펴봅시다.먼저 컬렉션의 첫 번째 요소에 대한 인덱스부터 시작합..
인코딩이란 문자나 기호들의 집합을 컴퓨터에 저장하거나 통신에 사용할 목적으로 부호화하는 방법이다. 부호화를 수행하는 장치나 회로, 소프트웨어 및 알고리즘을 부호기 또는 인코더라고 한다. 디코딩이란 인코딩의 반대 개념으로 복호화라고 하는데 부호화된 정보를 부호화되기 전으로 되돌리는 처리 방식을 말한다. 이코더와 마찬가지로 복화화를 수행해주는것을 복호기 또는 디코더라고 한다. 문자 인코딩의 구성 문자집합, 문자 인코딩 형태, 문자 인코딩 구조의 3가지로 구성된다. 문자집합 정보를 표현하기 위한 글자들의 집합이다. 예를들어 ASCII코드와 유니코드가 있다. 문자 인코딩 형태 특정한 문자 집합 안의 문자들을 컴퓨터 내에서 사용할 목적으로 일정한 범위 안의 정수로 변환하는 방법이다. 예를들어 유니코드와 8비트, ..
Q delegate는 왜 Weak로 선언할까요? A Retain cycle 을 피하기 위해서! 기본적으로 클래스의 객체를 가리키는 각각의 reference는 강함 참조(strong)입니다.두 클래스 인스턴스가 서로 강한 참조를 하게 되면 그것이 Retain Cycle이 됩니다. 서로 강한 참조를 하고 있으면 사용하지 않는데도 deinit 되지 않습니다. 만약에 객체에 대한 강한 참조가 존재하지 않는다면 메모리에서 자동으로 해제됩니다.weak로 선언한다면 강한 참조가 되지 않아 객체의 메모리가 해제되면 자동으로 nil이 될 것입니다. Retain Cycle은 delegate에서는 흔하게 발생합니다. 그래서 delegate를 사용할 땐 대부분의 상황에 weak로 선언합니다.UITableViewDelegate..
애니메이션 옵션들 중 자주 사용하는 것들curveLinearcurveEaseIncurveEaseOutcurveEaseInOut // https://developer.apple.com/documentation/uikit/uiview/animationoptions에 살펴보면 더 많은 옵션들이 나와 있습니다. curveLinear 애니메이션 커브는 애니메이션이 지속되는 동안 균등하게 애니메이션을 발생시킵니다. curveEaseIn 애니메이션이 느리게 시작된 다음 애니메이션 진행 속도가 점점 빨라집니다. curveEaseOut 애니메이션이 빠르게 시작되고 완료되면 느려집니다. curveEastInOut 애니메이션을 느리게 시작하고 빠르게 가속화 한 다음 애니메이션이 완료되기 전에 느리게 합니다. 속도 그래프
사용할 CGAffineTransform는 구조체입니다. (https://developer.apple.com/documentation/coregraphics/cgaffinetransform) 가장 큰 특징은 뷰의 프레임을 계산하지 않고 CGAffineTransform을 사용해 2D 그래픽을 그릴 수 있습니다. 간단하게 사용 가능하기 때문에 자주 사용하곤 합니다. CGAffineTransform에서 사용되는 아핀 변환 행렬은 2D 그래픽을 그리는데 사용되는 행렬입니다. 또한 아핀 변환 행렬은 객체를 회전, 크기 조절, 변환 또는 기울기를 위해 사용됩니다. 아핀 변환을 직접 생성할 필요는 없고 구조체에 있는 함수를 호출해 뷰를 이동(translate), 조절(scale), 회전(rotate)합니다. Scale..
UIView는 애니메이트 되는 프로퍼티를 정의해놨습니다.frameboundscentertransformalphabackgroundColor 익숙한 이 프로퍼티들을 애니메이트 가능하게 하려면 애니메이션 클로저에서 value 값을 변경해주면 됩니다. 뷰를 생성해줍니다. default가 흰색이니 잘 보이게 black으로 설정하고 view에 내가 만든 myView를 넣어줍니다. #1 먼저 withDuration과 animations이 있는 메서드를 사용해보겠습니다. 클로저가 축약 가능하니 #1 과 #2가 같은 동작을 합니다. (저는 편하게 축약형으로 #2로만 작성하겠습니다. 편하신 방법으로 사용하시면 될 것 같습니다.) 검은색 뷰가 2초 동안 흰색으로 바뀝니다. 정의된 프로퍼티 중에 원하는 프로퍼티의 값을 변경..
스위프트4.2 버전에서 나왔던 removeAll이랑 기존에 있던 filter는 비슷한 역할을 합니다. removeAll(where: ) method that performs a high-performance, in-place filter for collections.You give it closure condition to run, and it will strip out all objects that match the condition. 즉 removeAll(where: ) 메서드는 컬렉션에 대해서 고성능인 in-place filter를 수행합니다. 클로저에 필요한 조건을 주고 조건에 일치하는 모든 객체들을 제거할 것입니다. 여기서 in-place는 그 자리에서라는 의미로 removeAll을 하게 되면 ..
- Total
- Today
- Yesterday
- Algorithm
- 애니메이션
- objective-c
- Xcode
- SWIFT
- 책
- 딥러닝
- Animation
- ios
- 머신러닝
- swiftUI
- 책 후기
- 스위프트UI
- iOS SwiftUI
- rxswift
- RX
- wwdc
- 문자열
- Deep learning
- 스위프트
- ARC
- 알고리즘
- ReactiveX
- stanford SwiftUI
- 책 추천
- swift5
- string
- 독서
- objc
- leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |