- Total
목록분류 전체보기 (209)
꿈꾸는리버리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GTVDz/btrBRZKXrOh/iRKAwHvOJIUYcvhdUDrVhk/img.png)
저번 블로그 포스팅을 통해서 Closure가 무엇인지에 대해 알아봤다. 이번에는 Closure랑 좀 더 친해지는 ... 과정을 겪으려고 한다. ( 근데 아직 너무 어려움.... ^^ ) Closure의 Capture가 무엇인지, Closure가 reference type인지 몰랐다면..! 같이 알아보자구용 ~~ 🥹🔥✨🧚🏻♀️ Capturing Values Capturing Value를 살펴보기 위해 ... "the swift programming language"에서 한 예시를 가지고 왔다 ! 이 makeIncrementer 함수를 호출하면, 클로저가 반환된다. func makeIncrementer(forIncrement amount: Int) -> () -> Int { var runningTotal ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cGgOqB/btrBuP4f5sg/HeFeHvEoPCKwTpafKqliS0/img.png)
SwiftUI로 개발을 하면서 swift의 부족을 많이 느꼈기 때문에 NC1 끝나고 MC2 본격 시작 전에 swift의 기본기를 다져야 겠다는 생각을 많이 했다. 그래서 이번 주말에 내가 뭘 놓치고 있었는지에 대해 고민한 끝에 closure 로 시작해서,, 고차함수 그리고 optional을 이번주에 공부하기로 했다..! ( 다음주에는 property 예제들로 computed property나 type property가 어디서 사용되는지를 우선 알아보고자 한다.) 적어놔야지 할 거 같아서 !! ㅋㅅㅋ .... 그래서 시작한 Closure 공부 !!! 공부하면서 map, filter 같은 거 쓸 때 $0, $1 요런 친구들을 많이 봤었어서 클로저를 진짜 너무 공부하고 싶었다..!! 만약 나와 같은 needs..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YVb3y/btrExYwN47S/ow0mykmzkej1IJRxSG65qK/img.png)
심심할 때마다 알아봤던,, 나의.. 단축키 모음집.. 단축키를 통해 더 많은 기능을 사용할 수 있고 ( 단축키 공부하면서 알게 된 기능들이 많음 ㅎㅎ ), 단축키를 사용함으로써 빠르게 해당 내용을 수행할 수 있었다 >< ! + 왜인지.. 잘하는 거 같은.. 느낌도 뿜뿜.. + 계속 업데이트 중... 입니다유 ~ 만약 추가됐으면 하는 게 있다면 댓글로 남겨주시어요 ㅎㅎ ( 링크도 좋습니듕 ~! ) 🌷 시뮬레이터 실행하기 🌷 빌드하기 🌷 검색해서 이동하기 🌷 Navigator 창 보기/숨기기 🌷 inspector 창 보기/숨기기 🌷 Debug 창 보기/숨기기 🌷 에디터 추가 🌷 PreFereneces 열기 🌷 현재 소스코드에서 이름 refactor 하기 🌷 한 줄 선택하기 🌷 한 줄 전체 선택해서 위아래 이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6rmU7/btrBltNpAzR/UrGwMgZPPa4L8fRBdSxxJk/img.png)
2주 !! 짧았지만 짧았던 (?) 나노 챌린지가 끝이 났다 ! 지난 번 MC1이 끝난 후 동아리 사람들과 회고 시간을 가졌었는데 내가 너무 고쳐야 하는 점만 적었던 거 같아서 이번에는 내가 잘했고 흡족했던 부분들도 함께 적어보기로 했다 ! ( KPT 회고 느낌 ? ) 우선은 앱 자랑 ! ㅋㅋㅋㅋ 이번에 나노 챌린지에서는 앱 Acar을 만들었다 ! Apple Developer Academy 여정을 위한 회고 앱 Acar은 회고 가이드를 제시해주어 의미있게 회고 할 수 있도록 돕고 Challenge 별로 회고를 모아서 기록할 수 있습니다 :) ⊕ 잘한 점들 ! 1 ) 모든 단계를 제대로 ! ( 대신 앱 크기가 작은..) 혼자하는 앱은 뭔가 부실할 거 같다는 생각이 많이 들었어서 MC1 때 밟았던 절차들을 놓..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bdpIG9/btrAUk3gt2x/mscEwMPVwfH8apDc9BiG8K/img.png)
Input & Event Modifiers에는 많은 녀석들이 있지만, 오늘은 onAppear vs onRecieve 이 두녀석을 비교해 보고자 한다. 1) onchange onchange 이 녀석은 View Life Cycle에 속해 있는 아이이다. 정의를 살펴보자면,, @inlinable public func onChange(of value: V, perform action: @escaping (_ newValue: V) -> Void) -> some View where V : Equatable 어떤 값이 변했을 때 action을 취하도록 하는 modifier이다. 너무 긴 running time의 action이 필요하다면 background queue를 dispatch 해야 한다. ( 이 부분은 나중..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blzwDv/btrAUyVjtCh/InyR4D8HKxXu7VwrvygcPK/img.gif)
이번 포스팅에서는 @EnvironmentObject에 대해 알아보려 한다. 만약.. @StateObject와 @ObservedObject에 대해 모른다면 이전 포스팅 내용을 보고 공부를 하고 오는 게 ..!! 왜 @EnvironmentObject가 필요? @StateObject와 @ObservedObject를 사용할 때에는 자식뷰 N에서 사용하기 위해서는 계속 자식뷰1->자식뷰2->자식뷰3 으로 ObservableObjec를 넘겨주는 작업이 필요했다. 근데 만약에 자식뷰2,3,4에서는 A가 필요없는데 자식뷰 5에서 필요하다면..? 그래도 자식뷰2,3,4를 거쳐 자식뷰5까지 A를 전달해줬어야 한다. 그래서 나타난 게 ! @EnvironmentObject ! 요 칭구는 그림에서 봐도 알겠지만, 중간 중간에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MJ0mQ/btrAMukk7Co/oAIuqxzK6QDYzs3XvYB410/img.gif)
UserDefault vs AppStorage : UIKit 에서 userDefault를 사용했더라면, swiftUi에서는 appStorage를 사용한다! (appStorage는 property wrappers) 새로 추가된 거라면 무언가가 좋아졌다는 의미겠쥬..? UIkit에서 유저디폴트를 저장하고 업데이트 하는 걸 개발자가 코드로 짰어야 했다면 (명령형) swiftUI에서는 그냥 appStorage 쓰면 알아서 해준다는 것 ! (선언형) UIKit 공부하신 분이 아니고 appStorage가 처음이라면 굳이 userDefault 사용법과 swiftUI 사용법을 비교하지는 않아도 ... 되지 않을까.. 우선 , appStorage가 무엇인지, 그리고 어떻게 써야 하는지를 알아야 한다고 생각합니다.. 그리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xfFEj/btrAGgHU1PH/wCbszTkVDRpgrKWyKLnfF0/img.gif)
오늘은 @StateObject와 @ObservedObject의 차이에 대해서 알아보려고 한다. @StateObject와 @ObservedObject의 등장 배경 기존의 @ObservedObject는 SwiftUI가 View를 다시 랜더링 할 때 의도하지 않은 초기화가 발생하는 문제가 존재했다. 그리고 이 문제를 해결하기 위해서 @StateObject가 나왔다 ! 다음과 같은 view를 만들어보면서 !! 둘의 차이와 언제 무엇을 사용해야 하는지 알아보자. ObservableObject -> ViewModel 만들기 우선 ObservableObject 프로토콜을 준수하여 ViewModel을 만든다. 이제 이 RiverViewModel을 바라보고 있는 객체는 @Published Attribute로 선언된 da..