[Swift] WWDC15 - Optimizing Swift Performance
·
WWDC/Swift
저번 Understanding Swift ... 도 그렇고 이번 Optimizing Swift Performance도 그렇고 Swift에 관한 WWDC 내용은 정말 어렵네요 ㅠㅠ 여러 번 돌려봐야겠습니다... Optimizing Swift Performance Swift에는 클로저, 프로토콜, 제네릭, ARC처럼 좋은 기능이 많이 있습니다. 이런 고차원의 기능이 많으면 프로그램이 할 일이 많아지기 때문에 속도는 느려지기 마련입니다. 하지만 Swift는 고도로 최적화되어 native 코드를 굉장히 빠르게 컴파일해줍니다. Swift는 어떻게 두 마리 토끼를 다 잡았을까요? 애플은 위 사진의 모든 고급 기능들을 최적화하였습니다. Array Bounds Checks Optimizations 모두 알아볼 수 없으..
[Swift] Unicode Scalar와 String의 Random Access
·
Swift/개념 & 응용
서론 오늘 iOS Developers KR 카톡방에서 재밌는 사실을 알았습니다. (사실 공식 문서에 나와 있는 내용이라 이전에도 알고 있긴 했음 ㅎ;;;) 👨‍👩‍👧‍👧는 여러 개의 유니코드가 합체하여 이루어진 이모지라는 것인데요. 그래서 var emoji = "👨‍👩‍👧‍👧" print(emoji.count) //1 print(emoji.unicodeScalars.count) //7 count를 출력하면 1이지만 unicodeScalars를 출력하면 7이 됩니다. 오늘은 unicodeScalar에 대해 알아보고 String에서 Random Access를 지원하지 않는 이유도 엮어서 알아보겠습니다. Unicode 유니코드는 현존하는 전 세계의 모든 문자를 시스템에서 표현하고 다룰 수 있도록 고안된 표준입..
[Swift] WWDC22 - Embrace Swift generics
·
WWDC/Swift
서론 WWDC22는 모든 세션에서 한글 자막을 지원합니다. 한글 자막이 어떤지 궁금해서 요즘 공부 중인 Generic에 관련된 세션을 보고 정리해보았습니다. 한글 자막에 대한 후기도 마지막에 가볍게 말해볼게요. Abstraction 추상화(Abstraction)에 대한 개념으로 영상이 시작됩니다. 아래 코드를 봅시다. 코드에서 * .pi / 180.0 이 중복됩니다. 중복되는 코드를 함수로 묶어 추상화가 가능하고 보일러 플레이트를 줄일 수 있습니다. 이번 포스팅(영상)에서는 농장 환경을 구성하는 코드를 예시로 들고 있습니다. Model with concrete types 첫 번째로 Cow 구조체가 있습니다. Cow 구조체는 eat 메서드를 가지고 있고 먹이로 Hay 구조체를 전달합니다. (Hay : 건초..
[iOS] 화면 방향에 따라 다른 레이아웃 적용하기 - viewWillTransition
·
iOS/개념 & 개발
화면 방향에 따라 다른 레이아웃 적용하기 세로 레이아웃과 가로 레이아웃이 다른 앱을 쉽게 볼 수 있습니다. 대표적인 기본 앱은 계산기가 있죠. 스마트폰을 가로로 회전시키면 세로 레이아웃에 View가 추가된 레이아웃으로 변경됩니다. 스마트폰만 지원한다면 "세로로 고정시키면 되지 않나?"라고 생각할 수 있지만, 아이패드까지 지원한다면 화면 방향에 따라 적절한 레이아웃을 고려하는 것이 사용자 경험을 증가시킬 수 있습니다. 생각해보세요! 계산기 앱에서 가로 방향에서만 나오는 여러 수식 버튼들이 세로 방향에서도 나오고, 그 영향으로 버튼이 콩알만 해지면 훨씬 불편해지겠죠?? (여러 수식들로 멀미가 나는건 덤..) viewWillTransition(to:with:) 이럴 때 사용할 수 있는 메서드가 viewWill..
[Xcode] Xcode 14.0와 iPhone 14 pro 시뮬레이터
·
IT 소식
Xcode 14.0 업데이트 9월 12일 Xcode 14.0 업데이트가 나왔습니다. iOS 16.0, iPad 16.0 등을 지원하고 iPhone 14 Pro 확인이 가능합니다. 즉 변경된 노치를 확인할 수 있다는 것이죠! ㅎㅎㅎ Xcode UI도 변경된 점이 있는데요. https://developer.apple.com/videos/play/wwdc2022/110427/ 한글 자막을 지원하는 WWDC22에서 바뀐 Xcode를 소개하고 있답니다. 대표적으로는 시뮬레이터 선택지가 심플하게 바뀌었답니다. 저 작은 기기의 아이콘은 앱스토어 커넥트에서도 볼 수 있었는데 이곳저곳 돌려가면서 쓰는거여서 그런지 심플하니 매력적인 거 같아요 ㅎㅎ 아이폰 14 Pro 시뮬레이터 사실 이게 본론이죠? 아이폰 14 Pro 시..
[천안시 맛집] 짬뽕지존 쌍용점 리뷰 / 짬뽕 맛집 / 탕수육 맛집 / 쌍용동 맛집
·
🐱 정주는 쉬는 중 :]/맛집
기본 정보 가게 이름 짬뽕지존 쌍용점 위치 충남 천안시 서북구 쌍용대로 11 1층 메뉴 & 가격 수제비 짬뽕 11,000원 짬짜면 12,000원 지존 탕수육 16,000원 생수와 셀프바 짬뽕지존 쌍용점은 생수와 단무지를 모두 배달에서 받는듯한 단무지였습니다. 코로나 시국이니 그려려니 하려는데 셀프바는 프리해서 살짝 갸우뚱 했어요 ㅎㅎ; 단무지 국물 처리가 너무 번거로워서 이건 좀 아쉬웠네요. 대신 밥을 셀프코너에서 제공하는건 호감 포인트였습니다. 여긴 서빙로봇도 운영을 하네요. 신기해서 찍어봤어요. 사람이 옮길 때도 있고 로봇이 옮길 때도 있는데요. 대부분은 사람이 옮기는 것 같았습니다. 지존 탕수육 지존 탕수육입니다. 짬뽕지존 쌍용점에는 찹쌀탕수육, 사천탕수육, 지존탕수육이 있는데요. 저희는 가장 기본..
[Swift] O(1)로 제곱 수인지 확인하기
·
Swift/개념 & 응용
숫자가 x의 제곱 수인지 확인하기 특정 수가 x의 제곱 수인지 확인하는 방법은 많습니다. 가장 대표적으로 반복문을 이용하는 것이죠. while number >= 3 { if number % 3 != 0 { return false } number /= 3 } 이번 포스팅에서는 O(n)이 아닌 O(1)로 숫자가 x의 제곱 수인지 확인하는 방법에 대해 알아보려고 합니다. (알고리즘 문제를 풀다 알게 된 방법이에요! ㅎㅎ) n이 3의 제곱 수인지 판단한다고 가정합시다. 9는 3의 제곱수입니다. -> 9 % 3 == 0 27은 3의 제곱수입니다 -> 27 % 3 == 0, 27 % 9 == 0 ... 이 패턴을 살펴보면 (더 큰 3의 제곱수 % 작은 3의 제곱수) 값은 항상 0 입니다. 이는 "더 큰 3의 제곱수..
[iOS] 작심삼일 개발 일지 - 4 (스토리보드 분리)
·
iOS 프로젝트/작심삼일
서론 작심삼일은 학업과 새로운 프로젝트로 인해 신규 기능 개발은 잠시 접어둔 상태입니다 그렇지만 코드 정리는 꾸준히 해야할 거 같아서 오랜만에 프로젝트를 열어보았는데요. 최근 알아본 스토리보드 최적화를 작심삼일 프로젝트에 적용하려고 합니다. 전에 비해 굉장히 쾌적(?)해져서 정말 뿌듯하더라고요 ㅎㅎ 오늘 사용할 스토리보드 레퍼런스 포스팅은 https://jeong9216.tistory.com/535 에서 볼 수 있습니다. 기존 스토리보드 구성 기존에는 Main 스토리보드에 모든 화면이 존재했습니다. 화면 자체가 많은 앱이 아니라 불편한 점은 없었지만 화면마다 따로 협업할 경우 문제가 생길 수 있습니다. 그래서 스토리보드 레퍼런스를 이용해 여러 개의 스토리보드 파일로 분리하기로 결정했습니다. 스토리보드 레..
[Swift] isMultiple(of:) 소개
·
Swift/개념 & 응용
isMultiple(of:) 알고리즘을 풀다 isMultiple(of:)를 알게 되어 소개드리기 위해 포스팅을 작성합니다. 간단한 메서드지만 매우 편리하다고 느꼈거든요. isMultiple(of:)는 배수인지 판단하는 메서드입니다. 두 정수 a와 b에 대하여, a = q*b인 세 번째 정수 q가 존재한다면, a는 b의 배수이다. 예를 들어 6 = 2*3이므로 6은 3의 배수입니다. 0은 임의의 정수 x에 대해 0 = 0*x이므로 모든 것의 배수이다. 애플 공식 문서에 나와있는 isMultiple의 Declaration입니다. 메서드 정의를 통해 정수형만, 그중에서도 FixedWidthInteger 프로토콜을 준수한 정수형만 취급한다는 것을 알 수 있습니다. 예제 코드도 살펴봅시다. let number =..
[Swift] WWDC16 - Understanding Swift Performance (3)
·
WWDC/Swift
이전 글 Understanding Swift Performance (2) Generic drawACopy는 Generic을 이용해 매개변수 제약 조건을 주고 있습니다. 이는 프로토콜 타입과 무엇이 다를까요? 제네릭 코드는 매개변수 다형성이라고도 하는 보다 정적(static) 형태의 다형성을 지원합니다. 함수 foo는 Generic으로 만들어졌고 Drawable만 받을 수 있습니다. Point는 Drawable 프로토콜을 준수했으니 foo의 파라미터로 사용할 수 있습니다. 이 foo 함수가 실행되면면 Swift는 제네릭 타입 T를 Point 타입에 바인딩 합니다. 함수 foo가 바인딩과 함께 실행될 때 bar가 호출되면 local 변수는 직전에 사용한 타입인 Point를 가지게 됩니다. 타입은 매개변수를 ..
유정주
'분류 전체보기' 카테고리의 글 목록 (19 Page)