일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ios
- 클린아키텍쳐
- rib
- 로버트마틴형
- Large File Storage
- windowScene
- SWIFT
- UICoordinateSpace
- RxSwift
- memory safety
- iOS 버전 점유율
- Apple Certificate
- coordinateSpace
- conflicting access to memory
- 잡초가득블로그
- Automatically manage signing
- Dispatch.main.sync
- Concurrent
- 대머리깃허브
- iOS Target
- in-out
- Git Large File Storage
- RIBs Tutorial
- App Signing
- Github file size
- 메모리 접근 충돌
- Dependency Rule
- Ribs
- RxCocoa
- swiftdocs
- Today
- Total
목록전체 글 (68)
빙수왕의 개발일지
아래 코드를 그냥 쓰면 앱이 죽는다. 그냥이라는게 맨바닥에 쓴다고 해야하나..? 아무튼 개발자가 추가한 임의의 다른 시점이 아닌, 순서대로 실행되는 앱의 기본 시점에서 쓰면 죽는다. 왜 죽는걸까? 일단 DispatchQueue class에는 대표적인 2가지 인스턴스 메소드가 있다. sync와 async이다. sync는 메소드를 부른 객체의 시점을 멈추게 해서, 이 객체(DispatchQueue)가 sync안의 블럭을 모두 수행할 때 까지 다른것은 아무것도 할 수 없는 상태가 된다. 이걸 큐를 block 한다고들 한다. async는 블럭 안의 작업을 하긴 하는데 이 작업이 수행되는동안 다른것이 수행되는걸 막지 않는다. 큐가 다른행동도 할 수 있다. Serial큐에서 이렇게 해줘도 어차피 한번에 1개의 작업..
스토리보드만의, 앱의 흐름을 한눈에 볼 수 있다는 장점이 있고.. 내가 만들 앱의 규모가 크지 않아서 편하게 만들기에는 스토리보드를 써도 무관할 것 같지만, 사람 일은 모르기도 하고, 개인적으로는 코드로 UI를 구성하는게 유지보수측면에서 더 낫다고 생각해서 코드로 하기로 했다. 그리고 코드로 만드는 연습을 좀 하고싶었음!! 그래서 두번째로 한 일은 스토리보드를 삭제하는 것이다. 스토리 보드를 지우기 위해서는, 아래 과정이 필요하다. 1. storyboard파일을 지우고 Info.plist에 main으로 검색해서 나오는 항목 2개를 지운다. 2. AppDelegate 또는 SceneDelegate에서 window를 만들어주고, window의 rootViewController을 세팅해주고, 만든 window..
일단 프로젝트를 만들고, gitignore을 추가하고, 가장 먼저 정한 것은 타겟이다. 이런저런 소스를 작성할 때, 제공할 유저 타겟 최소버전을 명확하게 정해놔야 추후에 수정할 일이 없을 것 같았기 때문이다. Apple Store 지원에 따르면, 지금 iPhone 기기의 약 93%가 iOS 13 이상의 버전을 사용하고 있다고 한다. Deployment Target을 iOS 13으로 하면 7%를 커버하지 못하겠지만, 내가 만들 앱이 꼭 모든 버전 사람들에게 서비스를 제공해야만 하는 그런 류의 서비스(금융앱이라던지... )는 당연히 아니므로 그냥 속편하게 iOS 13으로 정했다. 아래 사이트를 참고하여 정했다. https://developer.apple.com/kr/support/app-store/ App ..
Memory Safety 기본적으로, Swift는 코드에서 안전하지 않은 동작이 발생하는걸 방지해준다. 예를들어, Swift는 변수를 사용하기 전에 초기화하도록 하고, 할당 해제(dellocated)후 메모리에 접근하지 않도록 하며, Array indices에서 out-of-bounds error가 있는지 확인한다. → 변수 초기화를 안하면 컴파일 오류를 낸다던가, 해제된 메모리에 접근하거나 array out of index 에러 발생 시 런타임에 오류가 떨어지는 것을 말하는듯 하다. Swift는 또한 동일한 메모리에 대한 다중 접근이 충돌(conflict)하지 않도록 한다. 어떻게? 메모리의 location을 수정하는 코드가 그 메모리에 단독으로 접근할 수 있도록 하는 방법으로. → 메모리의 위치를 수..
Swift Docs를 기반으로 이해한 내용을 작성하였습니다. In-Out Parameters 함수 파라미터는 default가 상수이다. 상수이므로, 함수 parameter의 값을 함수의 body 안에서 바꾸려고 하면 compile-time 에러가 발생. parameter의 값을 변경하고 싶다면, 그리고 이 변경이 함수 호출이 끝나고도 지속되길 원한다면, 파라미터를 in-out parameter로 만들어라. in-out 키워드는 parameter 앞에 배치하여 사용한다. in-out 매개변수에는 함수에 전달되고, 함수에 의해 수정되고, 원래 값을 대체하기 위해 함수 외부로 다시 전달되는 값이 있다. 상수나 문자(literal value)는 argument(전달인자)로 사용될 수 없다. (수정할 수 없는 값..
시스템 환경설정 -> 키보드 -> 단축키 -> 앱 단축키 + 눌러서 추가 아래 사진처럼 추가 (화면 xx으로 윈도우 이동) * 중요: 메뉴 제목이 "화면 왼쪽으로 윈도우 이동", "화면 오른쪽으로 윈도우 이동" 이여야 함. 옵션: "화면 왼쪽으로 윈도우 이동", "화면 오른쪽으로 윈도우 이동", "화면 왼쪽에 윈도우 배치", "화면 오른쪽에 윈도우 배치" "~ 배치": 이것도 이건 위에 요 부분이 안나온다 (전체화면처럼 됨) 키보드 단축키는 자신이 원하는걸로 등록!! 맥에는 이 기능이 없는줄알고 찾아다녔는데 검색하다가 방법을 알았다. 근데 가끔 안먹는다는거... ㅡ.ㅡ
문제상황 한 tableView 안에서 어떤 상태 flag 값에 따라 셀 class와 뿌려지는 내용(리스트)를 바꾸고 싶었다. -> 다시 바인드를 했다. -> 오류가 났음! 오류 내용 Maybe delegate was already set in xib or storyboard and now it's being overwritten in code. 해결방안 dataSource와 delegate를 초기화시킨 후 다시 bind해줘야 한다. tableView.delegate = nil tableView.dataSource = nil 수정 전 코드 수정 후 코드 중복으로 붙여넣었지만.. 아무튼 중요한건 bind를 다시 해주기 전, delegate와 dataSource에 nil을 넣어줘야 한다는 것이다. 출저 htt..