오늘 = 어제 + a

a >= 1

전체 글 16

[WWDC] Xcode에서 DocC로 도큐먼트 만들기

URL: Meet DocC documentation in Xcode - WWDC21 - Videos - Apple DeveloperDocC로 만들 수 있는 documentation레퍼런스 문서아티클튜토리얼Documentation이 빌드되는 과정Document만 빌드할 경우 스위프트 컴파일러를 거치지 않아도 된다.Documnet 빌드 하는 방법 3가지Product > Build Documentation (⌃⇧⌘D)target > Build Settings > Documentation Compiler - Options > Build Documentation during ‘Build’ > YesCLI 툴에서 xcodebuild docbuild DocC로 Documentation을 잘 쓰는 방법/// 이나 /*..

WWDC 2022.07.31

[WWDC] Meet Web Push for Safari - 맥에서 인스타그램 알림 받기

이 글은 iOS와는 거의 무관합니다. 크롬에서 사파리로 옮기면서 크롬에서 잘 쓰던 웹 푸시 노티가 사파리에서 지원하지 않는다는 것을 알게됐다. 관련 내용을 찾아봤는데 옛날 맥에서는 지원했던 것 같은데 최근에는 왜 지원하지 않는지는 잘 모르겠다. Push notification을 지원했던 흔적 👉 https://developer.apple.com/notifications/safari-push-notifications/ 그래서 애플은 앞으로도 지원을 안하나? 찾아보니까 이번에 새로 나온 macOS Ventura 부터 지원한다는 소식을 WWDC 세션에서 볼 수 있었다. 👉 https://developer.apple.com/videos/play/wwdc2022/10098/ 2년전의 프론트엔드 개발자 시절에 이 ..

WWDC 2022.07.23

2022 네이버 부스트캠프 웹모바일 7기 챌린지 합격 후기

부스트캠프 챌린지에 합격했다. 내일로 부산 여행 중에 갑자기 메일로 부스트캠프 합격 메일이 날아왔다. 졸업증명서를 이틀 안에 제출해달라는 연락을 받았다. 여행 중에 갑자기..?! 아직 여행 몇 일 더 남았는데 졸업증명서 제출이 필요하다는 메일에 당황했지만 다행히 게스트 하우스 근처 동사무소에서 출력할 수 있었다. 1차 코테 전공자라면 어렵지 않게 풀 수 있는 난이도였다. 2차 코테 전공 여부와 상관없었다. 코딩 테스트 문제를 많이 풀어봤다고 생각했는데 처음 겪는 문제를 보고 웃음이 나왔다.. ㅋㅋㅋ ㅋㅋ 합격 후기 재밌게 하고 있다. 다른 동료들의 swift 코드를 보는 것도 재밌고, 누군가 내 코드에 피드백을 주는 게 너무 좋았다. 어딜 가도 iOS 개발자는 나 혼자였기 때문에 내 코드에 대해서 피드백..

BoostCamp 2022.07.23

[iOS] 스탠포드 CS193P 12강

이번 12강에서는 11강에서 다룬 컬렉션뷰에 대한 데모와 UITextField에 대해서 다뤘다. 이번 포스트에서는 UITextField에 대해서 배운 내용을 정리해봤다. UITextField 사용자가 텍스트를 입력할 수 있는 객체다. UILabel과 비슷하면서 편집이 가능하다. 텍스트 기반 입력을 받을 때 일반 텍스트, 이메일, 숫자 등과 같은 다양한 유형의 입력을 받을 수도 있다. Delegate 객체를 사용해서 텍스트 편집 과정에서 변경된 내용에 대한 메서드들을 오버라이드 해서 사용할 수 있다. 키보드는 UITextField가 "first responder"가 될 때 나타난다. First responder는 responder 체인의 첫 번째 responder다. 그럼 responder는 뭘까? UIR..

CS193P 2021.09.16

[iOS] 스탠포드 CS193P 11강

이번 11강에서는 드래근앤드롭(Drag an Drop) 기능과 UITableView, UICollectionView에 대해서 다룹니다. Drag an Drop 강의에서는 데이터를 이동 시키는 Interoperable한(상호운용적인) 방법이라고 소개합니다. iOS 11 이상의 장치와 iPad의 앱 사이에서 드래그 앤 드롭이 작동합니다. 어떻게 구현하나? 드래그 앤 드롭은 제스처 인식기를 쓰지 않고, interaction을 사용합니다. 사용하려는 뷰에 UIDragInteraction, UIDropInteraction을 추가해주는 것으로 간단한 드래그 앤 드롭을 구현할 수 있습니다. 아래의 코드로는 단순한 뷰의 움직임만 구현할 수 있고, delegate의 메서드들을 오버라이드 해야 뷰에 담긴 데이터들을 드래그..

CS193P 2021.09.15

[iOS] 스탠포드 CS193P 10강

이번 10강에서는 멀티쓰레딩과 오토레이아웃에 대해서 다룹니다. Multithreading 기본적으로 UI관련 코드는 메인쓰레드에서 실행됩니다. iOS에서는 UI의 반응성을 중요하게 생각하고, 입장에서 앱이 멈추지 않고 즉각적으로 반응하기를 바라기 때문입니다. Queues 멀티쓰레딩은 거의 iOS의 "큐"에 관한 내용입니다. 메서드들을 큐에 줄 세운 다음 큐에서 메서드들을 꺼내서 실행시키게됩니다. 큐는 "serial"이거나 "concurrent" 일 수 있습니다. 멀티코어 프로세서를 사용하는 기기라면 병렬적으로 실행 할 수 있습니다. 오랜 시간이 걸리는 네트워크 작업 같은 것들은 Global 큐에서 실행하는 것이 좋다고 합니다. Main 큐 👉 UI 관련 기능만을 수행한다 Global 큐 👉 main 큐에..

CS193P 2021.09.14

[iOS] 스탠포드 CS193P 9강

이번에는 9강에 배운 뷰 컨트롤러 라이프 사이클(생명주기)과 스크롤뷰에 대해 정리해봤습니다. ViewController의 생명주기 생명주기를 배워야 하는 이유는 뷰컨트롤러가 생성되면서 호출되는 메서드들 사이에 사용자가 직접 개입하고 싶은 상황이 생기기 때문입니다. 아래와 같이 주기를 갖기 때문에 "Life cycle(생명주기)"라고 합니다. 아래 이미지 외에 추가로 loadView, viewDidLoad 등 다른 메서드도 존재합니다. loadView는 뷰를 만들고 메모리에 올리는 역할을 하고, viewDidLoad는 UIViewController가 메모리에 로드 된 후 수행할 동작을 작성하게 됩니다. 이처럼 iOS에서 뷰컨트롤러의 생명주기에서 작동하는 메서드들을 오버라이드해서 사용자가 원하는 기능들을 구..

CS193P 2021.09.02

[iOS] 스탠포드 CS193P 8강

이번 강의에서는 애니메이션 기능에 대해 배웁니다. 다음은 이전 강의에서 언급했던 UIView Animation을 통해 바꿀 수 있는 값들입니다. frame/center bounds (center를 변화시키는 것과 다르다.) transform (translation, rotation and scale) alpha backgroundColor 위 값들은 UIViewPropertyAnimator를 사용하면서 변경할 수 있다고 합니다. UIViewPropertyAnimator에 애니메이션을 수행하는 코드 블럭을 넣고 실행하게 됩니다. 그리고 "completion block"을 통해 애니메이션이 종료되었을 때 수행할 코드 블럭도 넣을 수 있습니다. UIViewPropertyAnimator 다음은 UIViewPro..

CS193P 2021.09.02

[iOS] 스탠포드 CS193P 7강

Multiple MVCs 이번 강의에서는 MVC가 다른 MVC를 포함하면서 기능을 크고 강력한 앱을 만드는 것을 다루게 됩니다. 위 슬라이드로 MVC가 다른 MVC를 하위 뷰로 갖고 있는 모습들을 보여줍니다. iOS가 제공하는 다른 MVC의 View에 해당하는 Controller들을 제공하는데 99%의 경우 다음 세 가지 중 하나를 쓴다고 합니다. UITabBarController 👉 하단 탭 바 UISplitViewController 👉 Master - Detail 형태를 갖는다 UINavigationController 👉 MVC 간 이동하는 형태로 쓰인다 UITabBarController 화면 하단에 탭을 여러개 포함하고 있는 뷰입니다. 하단의 버튼들은 다른 MVC가 포함되어 있고, tabBarIte..

CS193P 2021.09.01

[iOS] 스탠포드 CS193P 6강

6강에서는 앞서 진행했던 PlayingCard 데모에서 만들었던 카드에 tap, swipe 제스쳐가 발생할 때 카드의 모습을 바꿔주는 데모를 했습니다. 해당 데모는 UIGestureRecognizer를 다루는 것으로 tap, swipe 제스쳐를 처리했고, 각 기능에 대해 소개하는 것으로 6강은 마무리 됐습니다. 이번 6강 정리에서는 UIGestuerRecognizer에 대한 정리와 함께 데모에서 다뤘던 것들을 기록해봤습니다. UIGestureRecognizer Gesture Recognizer는 일반적인 제스처나 제스처의 변경을 인지했을 때 지정된 타겟 객체에 동작 메시지를 보냅니다. var state: UIGestureRecognizerState { get } UIGestureRecognizer는 상태..

CS193P 2021.08.31