
1. 장점 용량/처리 속도 다 가졌다. 개인적으로는 그중에서도 용량에 큰 강점이 있는 거 같다. 네이티브 형태로 애니메이션을 PNG 파일로 만들면 용량이 어마어마하다는 걸 경험했고, 그 당시에는 아무 생각이 없었는데 지금 보니 lottie가 좋은 솔루션이 될 거 같다. 2. 설치 SPM으로 설치해본다. lottie Project -> package Dependencies으로 들어가서 하단의 + 를 선택하고 lottie를 검색해서 바로 설치할 수 있다. 요즘에는 cocoapods 보다도 SPM 이 더 편한 것도 같다. 3. 리소스 준비 우선은 테스트를 해야 되니까 여기 들어가서 맘에 드는 것을 다운로드하여서 사용한다. 만약에 디자이너가 있다고 하면, 잘 이야기해서 플러그인 설치해서 진행할 수 있는지 협의(..

Frame 개념 Frame 은 상위 뷰 안에서의 현재 뷰의 위치라고 보면 되고, 우리가 쉽게 떠올리는 기본적이고 일반적인 개념이라고 보면 된다. Frame 구현 이미지로 확인해보면 아래의 프래임 이미지는 아래와 같이 코딩하고 self.view 에 addSubview를 한 경우이다 testView.frame = CGRect(x: 40,y: 50,width: 50,height: 50) Bounds 개념 Bounds는 카메라는 그대로 있고, 뷰 자체를 움직이고 싶을 때 사용한다. scrollview의 경우 본문의 크기는 휴대폰의 화면 사이즈를 넘어가는 형태로 그대로 있는 것이고 카메라도 그대로인데 뷰가 위로 올라가거나 내려가는 것을 상상해 볼 수 있다. 아래의 그림을 보면 더 잘 이해할 수 있다. Bounds..
오늘은 반응형 프로그래밍의 정의 대해 공부를 해본다. 명령형 프로그래밍 방법은 매회 데이터가 바뀔 때마다 명령을 하여 다시 계산을 하는 형태이고, 반응형 프로그래밍 방법은 데이터가 바뀌면 자동으로 업데이트 되어 결과 값이 바뀌도록 코딩하는 형태이다. 이것을 잘 표현하기가 어려운데 아래의 예제가 아주 잘 표현하고 있는 거 같아 가져왔다. 반응형 프로그램은 일종의 코딩 형태 혹은 기법이라고 발하는 게 맞을 거 같다. 특히 반응형으로 코딩하기 위해 만들어 놓은 library가 reactiveX이고 ios에서는 RxSwift라고 보면 된다. 다만, 이를 구현하기 위해 내부의 구조가 아주 높은 수준으로 추상화되어 있다. 예를 들면 Obserbable이라는 데이터의 스트림을 Object로 보고 관련 처리 방법들이 ..
가장 많은 솔루션 def solution(lottos, win_nums): rank=[6,6,5,4,3,2,1]//2개 맞는 경우 부터 5등 cnt_0 = lottos.count(0)//0의 개수를 세서 저장 ans = 0 for x in win_nums: if x in lottos://x 값이 lottos 에 있는지 확인 ans += 1 return rank[cnt_0 + ans],rank[ans] 나의 정답... 맞기는 했는데 구조가 좋지 않은거 같다. def solution(lottos, win_nums): answer = [6,6]//초기값 6등 count = 0 for i in lottos: for j in win_nums: if i==j: answer[0] -=1 answer[1] -=1 if..
오늘은 신고 결과 받기 - python 코드를 분석해 본다. python 의 dictionary 형태를 처음써 보았다. set 함수도 처음 써 본다. def solution(id_list, report, k): answer = [0]*len(id_list) //정답 형태 작성 reports = {x:0 for x in id_list}// 데이터를 담을 형태 생성 for r in set(report):// set으로 복수를 단수로 하고 reports[r.split()[1]] +=1// 데이터에 해당 하는 곳에 +1 for r in set(report): if reports[r.split()[1]] >=k://k값 보다 높은 값을 찾아 answer[id_list.index(r.split()[0])] +=1 ..
1. 의미 foreground에서 background / background에서 foreground 로가는 중간 단계에 있는 state이다. 문자 혹은 전화가 왔을 때에도 In-Active상태가 된다. 2. 코드상 표현 ios13부터는 SceneDelegate에서 처리를 하는데 아래와 같이 보면 된다. 만약 벡 그라운드로 가거나 포어 그라운드로 올라올 때, 처리해야 하는 코드가 있으면, 2개의 코드에서 처리하면 된다. sceneWillResignActive, sceneWillEnterForeground func sceneDidDisconnect(_ scene: UIScene) { NSLog("삭제될때") } func sceneDidBecomeActive(_ scene: UIScene) { NSLog("f..
1. 정의 swift 에는 final이라는 키워드를 제공하는데 override를 막는 키워드이다. 즉 해당 키워드를 작성하면, 다른 class에서 상속받지 못한다. 2. 이점 일반적으로 swift 에서는 상속을 고려하여 runtime에 어떤 메서드를 실행할지를 결정하는 반면에 final로 작성해두면, 컴파일 타임에 어떤 함수를 사용할지 (어디서) 결정할 수 있기 때문에 판단 과정이 생략되고 이로 인해 퍼포먼스에 이점이 있다고 할 수 있다. 참고로 만약 final로 선언하고 override를 하게 되면 컴파일 타임 에러가 발생한다. 참고 https://velog.io/@ryan-son/Swift-final-%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%99%9C-%EC%82%AC%EC%9A%A9..
1. reference counter 메모리 누수를 막고 free를 안 해도 자동으로 메모리를 삭제 하도록 고안해 낸 방법이 reference counter인데 인스턴스 객체를 생성할 때, 내부에 레퍼런스 카운터를 두어서 자기 자신을 참조할 때마다 카운터를 증가시켜서 해당 카운터가 0 이 될 때, 스스로 삭제를 하는 방식이다. 2. 문제 발생 이러한 방식은 따로 리소스를 free 해 줄 필요가 없어서 아주 편리한데, 한가지 문제가 있다. 만약 객체 내부의 변수가 다른 객체 내부의 변수를 서로 참조하고 있다면, 해당 리소스는 free가 되지 않는다. 아래와 같은 코드에서 A와 B를 nil로 바꾸어 준다고 해도 내부 변수가 서로를 참조하고 있어서 객체가 사라지지 않는다. -> memory leak class..
- Total
- Today
- Yesterday
- ATS failed system trust
- ChatGPT
- 코테
- 모듏화
- RxSwift
- chatgpt 4o
- Fastlane
- XCTestExpectation
- ios
- GCD
- bitrise
- xcode whitespace trim option
- Default Rules
- async
- swiftLint
- 프로그래머스
- swift
- GPT4
- IF (KAKAO) DEV 2022
- jenkins
- AppThinning
- 같이쓰기
- geohash
- CI/CD
- AWS IoT
- Moya
- 빌드자동화
- MQTT
- firebase
- 무료는 아니지만
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |