일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 커스텀 뷰
- development
- Opensource
- Swift
- Cocoa Internals
- ios #swift #uialertcontroller #메서드 스위즐링
- Algorithm
- OS
- WWDC
- Tistory
- 코코아 인터널스
- 네이버 부캠
- 알고리즘
- 단위 테스트
- Design Pattern
- 개발
- notion
- Hello
- SwiftUI
- World
- rxswift
- 부스트캠프
- 후기
- boostcamp
- Today
- Total
목록전체 글 (51)
꿈돌이랜드
3.1.1 수동 참조 계산 방식과 비교ARC를 사용해서 자동으로 메모리를 관리한다고 해서 2장에서 설명한 참조 계산 방식이 다른 방식으로 새롭게 바뀐 것은 아니다.…중략ARC에서도 여전히 객체마다 참조 횟수가 있고, 객체 소유권에 대한 동일한 규칙을 기준으로 참조 계산을 진행한다. 수동 참조 계산 방식은 객체 소유권에 대한 동일한 규칙을 기준으로 참조 계산을 진행한다. 수동 참조 계산 방식은 객체를 생성하면서 소유권을 가지며, 특정 객체를 참조하기 전에 소유권을 요청하고 참조한 이후에는 소유권을 반환한다. ARC에서도 참조 계산을 위한 규칙과 방식을 그대로 적용한다. 시간 흐름 →MRC: alloc → init → doAction → retain → copy → release → release → dea..

8월 4일을 기점으로 해서 챌린지의 모든 일정이 끝났다. 챌린지를 시작한지, 벌써 한달이 훌쩍 가버렸다는 사실에 소스라치게 놀라고 있다. 챌린지 도중에는 참 시간이 안간다고 느꼈지만 끝나고 나니 벌써 달력을 한 장 넘기고 있다. 마치 군대 훈련소를 다녀온 느낌이랄까? 부스트캠프를 진행하면서챌린지 기간 동안 평일에는 미션을 수행하는데에 온 시간을 쏟았다. 미션 구현과 학습 정리까지 온전히 마치면 새벽 3~4시에 자는 것이 일상이 되었다. 한 번은 생체리듬이 이상해져서 하루종일 연속으로 2시간만 자게되고 수면시간이 파편화 되어서 낮잠을 20분씩 자면서 일정을 소화해 낸 적도 있다. 챌린지 과정을 소화하기 위해 본가로 내려와서 부모님의 도움을 받았는데 무사히 수료할 수 있게 해주신 부모님께 감사하다…무엇을 얻..
2.1 메모리와 객체운영체제가 관리하는 프로세스는 이론적으로 32bit인 경우 4GB까지의 크기를 가지는 가상 주소 공간에 접근할 수 있다. 64bit인 경우 18EB(2^64)까지 가능하다. macOS는 메인 메모리상의 사용하지 않는 공간을 페이지(가상 메모리 단위)로 나눠서 하드 디스크에 백업하는 기능을 제공한다. 반면 iOS는 하드 디스크가 없고 대신 플래시 메모리를 사용하기 때문에 늘 메모리가 부족하기 마련이다. iOS에서 읽고 쓰는 데이터는 프로그램을 실행하는 동안 사라지지 않지만, 사용하지 않는 읽기 전용 데이터는 페이지를 저장하고 메모리상에서 지워 버린다. iOS는 읽고 쓰는 데이터들의 총합이 일정 수준 이상 많아지면 메모리 부족 경고를 보내고, 그래도 부족하면 앱을 강제로 종료시켜서 메모리..
1.1.6 스위프트 오브젝티브-C 호환 객체오브젝티브-C 코드에서 스위프트 객체를 사용하려면 해당 스위프트 객체는 반드시 NSObject를 최상위 클래스로 지정하고 상속받아 만들어야 한다. 그렇지 않으면 스위프트 전용 객체로 동작하기 때문에 오브젝티브-C에서는 사용할 수 없다. 1.2.1 오브젝티브-C 객체와 메모리 구조오브젝티브-C에서 객체 인스턴스는 항상 힙 영역에 만들어지며, 해당 힙 메모리 주소를 스택 영역에 할당한 포인터로 참조해서 접근한다. 포인터 변수에 담긴 메모리 주소와 해당 주소의 객체 인스턴스가 실제로 유효한지를 포인터 주소만으로는 판단할 수 없다. 객체 포인터 변수는 이미 해제된 객체 주소를 저장하고 있는 위험한 포인터(dangling pointer) 일 수도 있다. 그래서 객체에 대..
Target Action우리는 흔히 UIKit를 이용하여 개발할 때 버튼이나 여러 요소들의 사용자 이벤트를 처리하기 위해 Target Action 디자인패턴의 원리를 이용해 다음과 같은 코드를 사용한다.let button = UIButton() button.addTarget(self, action: #selector(touchUpButton(_:)), event: .touchUpInside) @objc func touchUpButton(_ sender: UIButton) { //... } 헌데 실제로 어떻게 프로그램의 런타임에서 action이 실행될 수 있는 것일까? 그 원리를 알아보고자 한다.Dispatch우선 Dispatch의 개념을 알아야 한다.많은 객체지향 언어들이 상속을 통해 메소드와 프로퍼티들..
네이버 부스트캠프 지원계기iOS 관련 부트캠프를 알아보던 중, iOS 과정이 있는 부트캠프는 크게 3가지 인 것 같았다. 네이버 부스트캠프, 서울시 새싹, 애플 디벨로퍼 아카데미. 사실 애플 아카데미에 흥미가 있었지만, 포항에 가야한다는 부담감이 있었고, 새싹은 아직 지원기간이 아니었었다. 그래서 네이버 부스트캠프가 제일 좋은 선택지로 다가왔고, 주변 분들께서 네이버 부스트캠프를 추천하셔서 iOS파트를 지원하기로 했다.지원서(자소서) 작성문항이 제대로 기억나지는 않지만 간단하게 학력, 경력사항 등과 자소서, 블로그나 깃허브 주소를 작성해야 했다. 자소서는 항목당 400자 내외로 작성이라 되어있어서 큰 부담은 없었고 지금까지 작성했던 자소서들 중 간추리고 정리해서 금방 작성해서 미루고 미루다가 하루?만에 ..
Testing your apps in Xcode 애플 개발자 문서를 읽으면서, Xcode에서 테스트를 어떤식으로 하는지 알아봅시다. Xcode에서 앱 테스트 하기XCTest로 로직 실패 감지, UI 문제, 그리고 성능 회귀 측정하기.개관XCTest는 다양한 수준의 추상화에서 테스트를 작성하는 기능을 용이하게 합니다. 좋은 테스트 전략은 여러 유형의 테스트를 결합해서 각각의 이점을 극대화합니다. 앱의 로직을 다루기 위한 많은 빠르고 잘 분리된 단위 테스트, 그보다 더 적은, 제대로 연결되어 있음을 보여주기 위한 소수의 통합 테스트, 일반적인 사용 사례의 올바른 UI 동작을 확인하기 위한 UI Test를 포함한, 아래 그림과 같은 테스트의 “피라미드” 분포를 목표로 합니다. UI 테스트는 앱이 예상대로 사용..
지난 CMC 메이커스 동아리를 통해 팀원들과 Runway 앱 개발을 진행했다. 팀원들과 밤도 지새우고 힘들었지만 마지막에 대상이라는 좋은 결과를 얻을 수 있었다. 누구하나 가릴 것 없이 모두 열심히 하는 팀원들 덕분에 포기하지 않고 마지막까지 열심히 개발할 수 있었던 것 같다. Runway 앱은 코로나 이후 증가하고 있는 오프라인 쇼핑을 겨냥하여 제작된 앱이다. 현재는 성수 지역의 매장들을 데이터로 하여 서비스하고 있다. (발로 직접 뛰어 데이터를 수집한 기획자 설원, 디자이너 유쨍 모두 고생했다…)현재, 앱스토어와 플레이스토어 모두 출시된 상태이다.CMC 동아리에서는, 각 파트별 한명씩 맡아 팀을 이루게 된다. 나는 iOS 개발을 담당했다. 혼자서 작업해야 한다는 점을 인지하고 동아리에 지원했었지만, ..