어제는 공부를 소홀히했다. 공사다망했기 때문이다.
어제 한 것이라고는 mac과 친해지며 xcode와 플레이그라운드를 접해본 것... 그래도 뭐라도 했으니 칭찬해보자
못했다..!
앱만들기에 돌입했다. 아주 기초적인 앱이지만 재미있었다. 그리고 굉장히...앱만들기 쉽게 구현해주었구나 하는 생각이 절로 들었다. figma 랑도 비슷한 부분이 많이 있어서(최근 마인드 팰리스로 구현한 경험이) 훨씬 재밌었다.
디자인하기에는 되게 편한것 같은 느낌이라 Framework를 굉장히 잘 구현해 놓았구나 하는 생각이 절로 듬.
오랫만에 뭔가 구현하는 느낌이 들어 재미있었다.
그리고 Framework의 요소 하나하나가 사실 class 상속 override 타입 열거형 case 등등등 의 의미를 가진다고 생각하면서 보니 아주 간단한 코드라도 내가 생각할수있는 것이상의 기본개념이 녹아들어 있는 것 같다.
오늘은 스터디 준비를 했다. 2번째 스터디였고, 지난번과 방식을 바꾸어서 FAQ 자주하는 질문을 각자 범위내에서 읽어보고 공유하고싶은 부분, 어려운 부분을 추려오는 것이었다. 어제 하려고 했지만 위의 이유로 오늘 1시부터 2시간 가량 준비해서 공유하게되었다.
함수, 옵셔널, 열거형 부분을 정리해서 공유하고 설명했는데 확실히 혼자 머릿속으로 정리하고 글로 정리하는 것보다 설명하는게 훨씬 내가 뭘 모르는 지 알 것 같은 느낌이었다.
이번에는 기존 FAQ를 조금 다듬어서 공유하며 보여주며 설명했는데 다음에는 좀 더 맥락이 전달이 잘 되게끔 시간을 좀 더 들이더라도 따로 글을 써서 만들어서 공유해야겠다는 생각을 했다.
조원분이 ArraySlice 서브타입(Array의 서브타입이라고 한다) 에 대해 알려주시고 같이 고민해보았는데 즉
array1[0...2] 이런식으로 인덱싱한 어레이는 기존의 Array< String >처럼 타입이 유지되지않고 ArraySlice 라는 타입으로 변환되어 결국 저걸 변수에 넣어서 다시 array에 붙이는 그런 행위가 불가능해진다. (서로 다른 타입끼리 연산불가)
조금 스터디가 끝나고 알아보니, 내가 지금 대강 알아본 느낌으로는 Array에서 상속된 타입이 ArraySlice 서브타입이라, 메모리는 기존 Array의 것을 공유하되(일종의 참조를 하는 셈) 타입은 다르게 설정해서 사용하는 듯 하다. 메모리를 아낄수 있다는 장점이 있지만 반대로 강한참조에서 일어나는 부작용인 메모리누수의 가능성도 발생하는 듯 하다. 따라서 이렇게 인덱싱하여 서브타입으로 인스턴스를 생성한 경우에는 생존기간을 오래두어서는 안되는 주의점이 있다고 한다.
잘모르겠으니 우선 관련 링크첨부. 아주 중요한 개념은 아니라고 하는데 그래도 알아보니 재미있다.
https://zeddios.tistory.com/600
https://careerly.co.kr/comments/75408