[Swift] WWDC16 - Understanding Swift Performance (2)
·
WWDC/Swift
이전글 [Swift] Understanding Swift Performance (1) 지난 시간 지난 시간의 핵심은 최적화를 진행하는 방법이었습니다. 내 인스턴스가 스택과 힙 중 어디에 할당되는지, 인스턴스를 전달할 때 오버헤드가 얼마나 발생하는지, 인스턴스 메서드를 호출하면 어떤 디스패치로 동작하는지 고려해야 합니다. 구조체를 사용하여 다형성 코드를 작성하는 방법은 프로토콜 지향 프로그래밍입니다. Protocol Types 프로토콜 타입을 알아보면서 프로토콜 타입 및 제네릭(Generic) 코드를 어떻게 구현해야 하는지 알아봅시다. 또, 프로토콜 타입의 변수가 저장되고 복사되는 방식과 메서드 디스패치가 작동하는 방식을 살펴봅시다. 이전 포스팅에서 다뤘던 Point와 Line을 프로토콜로 구현했습니다. ..
[Swift] WWDC16 - Understanding Swift Performance (1)
·
WWDC/Swift
WWDC 16의 Understanding Swift Performance 세션을 이제서야 보았습니다. 2편에 걸쳐 나눠서 정리해보려고 합니다. (해당 포스팅의 사진은 https://developer.apple.com/wwdc16/416 의 프레젠테이션 슬라이드에서 가져왔습니다.) 참고로 해당 포스팅에서는 메서드와 함수를 구분하여 표현하고 있습니다. 발표도 Method와 Function을 명확하게 구분해서 말하고 있더라고요. 두 개의 차이는 https://jeong9216.tistory.com/472 를 참고해 주세요. Dimensions of Performance 추상화를 만들고 추상화 메커니즘을 선택할 때 세 가지를 고려해야 합니다. 인스턴스가 스택에 할당되는지 힙에 할당되는지 인스턴스를 전달할 때 참..
[iOS] 스토리보드 분리 - 스토리보드 레퍼런스(Storyboard Reference)
·
iOS/개념 & 개발
스토리보드 스토리보드는 장점과 단점이 명확한 UI 개발 방법입니다. 스토리보드는 아래와 같은 장점을 가집니다. ViewController 간 이동을 한 눈에 볼 수 있음 ViewController의 모습을 시각적으로 표현해줘서 이해하기 쉬움 View를 드래그 & 드랍으로 편하게 생성할 수 있음 단점은 이렇습니다. Git Merge 시 스토리보드에서 충돌(conflict)이 발생함 스토리보드가 여러 개가 되면 파일을 여는 속도가 느려짐 이러한 단점을 해결하기 위해 스토리보드를 사용하지 않고 100% 코드로 구현하거나, 스토리보드 레퍼런스를 이용해 스토리보드를 화면 별로 분리해서 관리합니다. 저는 코드로 UI를 작성하는 것을 선호하는데요. 알고 안 쓰는 것과 몰라서 못 쓰는건 아예 다르니, 오늘은 스토리보드..
[iOS] UITextView 원하는 문자에만 색상 넣기(여러 개도 OK)
·
iOS/개념 & 개발
기능 설명 UITextView의 텍스트에 색상을 넣어야 하는 작업을 해야 했습니다. 모든 글자가 아니라 특정 키워드에만 색상을 적용하는건데요. 이 키워드는 여러 개가 될고 텍스트에 키워드가 여러 번 나올 수 있습니다. 예를 하나 들어봅시다. UITextView에 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세 ... 텍스트가 들어있다고 합시다. 색상을 바꿔야 하는 키워드는 "동해물", "백두산", "하느님" 이라고 할 때, 이렇게 되어야 하는거죠. 기존 코드의 문제 인터넷에 떠도는 코드로 시도를 해보았습니다. l..
[서초구 맛집] 느린마을 양조장 교대점 리뷰 / 막걸리 맛집 / 교대 맛집
·
🐱 정주는 쉬는 중 :]/맛집
기본 정보 가게 이름 느린마을 양조장 교대점 위치 서울 서초구 반포대로28길 56-3 한라빌딩 2층 메뉴 & 가격 [술] 느린마을 막걸리(봄, 여름, 겨울) 1병 당 10,000원 느린마을 소주(16.9) 1병 5,000원 민들레대포(약주) 9,000원 [안주] 매콤한 차돌박이 숙주 볶음 24,000원 떠먹는 치즈감자전 18,000원 해물알탕 25,000원 순살치킨 & 감자튀김 9,900원 주먹밥 3,500원 느린마을 양조장 교대점 느린마을 양조장 교대점의 내부 인테리어는 상당히 고급졌습니다. 막걸리 집은 투박하다는 편견이 있었는데 굉장히 세련되고 화장실도 깨끗했어요. 메뉴판 느린마을 양조장의 느린마을 양조장은 4계절로 막걸리를 분류합니다. 봄, 여름, 가을, 겨울 순으로 숙성 시간이 길고 도수도 높아요..
[Swift] 공식 문서 - Memory Safety
·
Swift/Swift 가이드
새로 배운 점 Swift는 특정 메모리 공간을 수정하는 코드가 그 메모리의 소유권을 가지도록 요구함으로써 동일한 메모리 영역을 동시에 접근할 때 충돌하지 않도록 해줍니다. 메모리 액세스의 지속시간은 instantaneous(순간적) 또는 long-term(장시간)일 수 있습니다. 만약 액세스가 끝나기 전에 다른 코드가 실행될 가능성이 없다면 이 액세스는 순간적(instantaneous)입니다. 다른 코드의 실행에 걸쳐서 메모리에 액세스하는 여러 방법들이 있는데, 이를 장기간(long-term) 액세스라고 합니다. 오버랩(overlap)이란 장기간 액세스가 시작된 후 종료되기 전에 다른 코드가 실행되는 것입니다. 장기간 액세스는 다른 장기간 액세스 또는 순간적 액세스와 오버랩 될 수 있습니다. 함수는 모든..
[일상] 육사오(6/45) 무대인사 후기 / CGV 용산아이파크몰 7관 / 곽동연 무대인사 / 고경표 무대인사 / 이이경 무대인사
·
🐱 정주는 쉬는 중 :]/일상
육사오(6/45) 무대인사 오늘은 육사오(6/45) 무대인사를 다녀왔습니다. 육사오는 바람을 타고 군사분계선을 넘어가버린 57억 1등 당첨 오또를 둘러싼 남북 군인들간의 코믹 접선극인데요. 고경표, 이이경, 음문석, 박세완, 곽동연 , 이순원, 김민호가 출연합니다. 저는 무대인사는 처음이에요. 곽동연의 팬이라 난생 처음 무대인사를 다녀왔습니다 ㅎㅎ 영화 자체도 너무 재밌었어요. 스포가 될 수 있기에 자세한 내용은 언급하지 않겠습니다만, 그저그런 영화라고 생각하고 그리 기대하지 않았지만 개그 코드도 잘 맞고 너무 웃겼습니다 ㅋㅋ 극장 안 분위기도 다같이 웃는 분위기여서 더욱 좋았어요. 무대인사 시작 저는 CGV 용산아이파크몰 7관의 F-11 이었습니다. 되게 구석에 있는 관이었어요. 대략 이정도 거리의 자..
[Swift] 깊은 복사와 얕은 복사(feat. NSCopying)
·
Swift/개념 & 응용
Value 타입과 Reference 타입 값(value) 타입과 참조(reference) 타입은 복사 방식이 다릅니다. 일반적으로 값 타입은 깊은 복사, 참조 타입은 얕은 복사가 발생한다고 알고 계실텐데요. 정말 그런지 알아보고 참조 타입이어도 깊은 복사를 할 수 있는 방법에 대해 알아봅시다. 깊은 복사(Deep copy) 깊은 복사는 데이터 자체를 복사하는 방법입니다. 각자 독립적인 메모리를 차지하기 때문에 복사한 인스턴스의 데이터를 바꾸더라도 원본에 영향을 주지 않습니다. 값 타입의 인스턴스들은 깊은 복사를 하게 되는데요. 아래는 Collection 타입인 Array를 복사하는 예제입니다. var arr: [Int] = [1, 2, 3] var copyArr = arr print("arr: \(arr..
[iOS] Generic을 이용한 loadView( ) 코드 최적화
·
iOS/개념 & 개발
문제 상황 저는 ViewController 파일과 화면 view 세팅 파일을 분리했습니다. loadView( )를 오버라이딩해서 view를 교체해줬어요. 아래는 HomeViewController의 view를 커스텀 뷰인 HomeView로 교체하는 코드입니다. override func loadView() { super.loadView() homeView = HomeView(frame: self.view.frame) self.view = homeView } 문제 1 불필요한 view를 생성합니다. super.loadView( )에서 기존 view가 생성되고 있었습니다. 어차피 제가 만든 Custom view로 바로 교체하기 때문에 기존 view는 생성하지 않아도 되는 것이죠. 문제 2 위 코드는 모든 Vie..
[Swift] Swift Interview Questions - Intermediate(중급)
·
Swift/개념 & 응용
현재 포스팅은 2편 Intermediate 질문입니다. 1편 Beginner 보러가기 Question 1 차이가 없습니다. nil과 Optional.none은 같습니다. 동작은 같아도 nil로 작성하는 것이 일반적인 코드 컨벤션에 더 맞습니다. Question 2 let 인스턴스는 mutating 메서드를 호출할 수 없습니다. mutating 메서드는 값을 바꿀 것이라는 전제 하에 정의한 메서드인데 let 구조체 인스턴스는 내부 프로퍼티를 변경할 수 없으므로 컴파일 에러가 발생합니다. Question 3 I love cars가 출력됩니다. thing 변수를 변경하기 전에 closure에서 thing을 캡처했습니다. 따라서 I love cars가 출력됩니다. 만약 [thing]이 없었다면 "I love a..
유정주
'분류 전체보기' 카테고리의 글 목록 (20 Page)