본문 바로가기

분류 전체보기41

[Prography] 프로그라피 9기 중간 회고 안녕하십니까, 민트입니다 😈어느덧 프로그라피를 시작한지 4개월이 지나갑니다. 팀에서도 회고를 하게 된 김에 가볍게 중간 회고를 해보려 합니다. 이번이 저의 첫 사이드 프로젝트인데요, 팀원 분들이 모두 유능하셔서,, 기획이나 일정을 잡는 부분에 있어서 사이드는 어떻게 해야하는지 많이 배우는 시간이었습니다. 특히 저는 처음부터 모든 서비스들이 유저 친화적으로, 다양하게 나와야 한다고 생각했었는데 마냥 그런 건 또 아니더라구요. 앱을 업데이트 하는 것은 빠르지만, 출시를 하기까지는 시간이 오래걸리기에 우선적으로 MVP를 빠르게 출시한 후 꾸준한 업데이트로 발전시켜가는 것이 회사가 아닌 사이드로 프로젝트를 유지하기에는 더 유리한 것 같아요. 또 저는 사실 앱을 한번 출시까지만 하고나서는 업데이트 과정이니까 그.. 2024. 7. 5.
[iOS/Swift]카카오톡 공유하기 구현 3. openURL, 앱이 suspended일 때, query Parameter에 한글이 있을 때 2024.07.05 - [iOS/트러블 슈팅] - [iOS/Swift]카카오톡 공유하기 구현 1.이미지 URL 설정 + FileManager에 UIImage 저장 [iOS/Swift]카카오톡 공유하기 구현 1.이미지 URL 설정 + FileManager에 UIImage 저장우리 서비스 roome는 방탈출 프로필을 생성하는 것이 가장 주된 기능이다. 때문에 이 프로필을 다른 사람들에게 공유하는 것이 필수였다. 네이버, 인스타 등 여러 가지 매체를 고민했는데 프로필mintraum.tistory.com2024.07.05 - [iOS/트러블 슈팅] - [iOS/Swift]카카오톡 공유하기 구현 2. 사용자 정의 템플릿 사용 [iOS/Swift]카카오톡 공유하기 구현 2. 사용자 정의 템플릿 사용2024.07.0.. 2024. 7. 5.
[iOS/Swift]카카오톡 공유하기 구현 2. 사용자 정의 템플릿 사용 2024.07.05 - [iOS/트러블 슈팅] - [iOS/Swift]카카오톡 공유하기 구현 1.이미지 URL 설정 + FileManager에 UIImage 저장 [iOS/Swift]카카오톡 공유하기 구현 1.이미지 URL 설정 + FileManager에 UIImage 저장우리 서비스 roome는 방탈출 프로필을 생성하는 것이 가장 주된 기능이다. 때문에 이 프로필을 다른 사람들에게 공유하는 것이 필수였다. 네이버, 인스타 등 여러 가지 매체를 고민했는데 프로필mintraum.tistory.com이전글에 이어서 공유하기 템플릿에 대해서도 고민이 있었다. 우리 팀은 보낸 이와 받는 이가 다르게 보이길 원했다.정확히는 "확인하러 가기" 버튼이 굳이 본인에게 보일 필요가 없다고 생각했다. 때문에 위 사진처럼 .. 2024. 7. 5.
[iOS/Swift]카카오톡 공유하기 구현 1.이미지 URL 설정 + FileManager에 UIImage 저장 우리 서비스 roome는 방탈출 프로필을 생성하는 것이 가장 주된 기능이다. 때문에 이 프로필을 다른 사람들에게 공유하는 것이 필수였다. 네이버, 인스타 등 여러 가지 매체를 고민했는데 프로필 이미지를 보여주면서 클릭 시 우리 앱으로 연결을 하는 것에는 카카오만이 적합하다는 결론이 나와 카카오톡 공유하기만 사용하기로 했다.1. 흐름공유하기가 이루어지는 과정은 다음과 같다. -----보내는 이-----1. 사용자가 ViewController에서 공유하기 버튼을 누른다. 2. ViewModel에서 KakaoShareApi를 사용해 공유용 템플릿을 생성하고, 전달한다. 3. 전달 후 되돌아온다.-----받는 이-----1. 확인하러 가기 버튼을 누른다.2. -1) 앱 미설치 시 카카오 디벨로퍼스의 플랫폼에 설.. 2024. 7. 5.
[iOS/Swift]버튼은 한 번만 눌렀는데 View가 두 번 불린다? 아주 요상한 일이 있었다. 이미지 저장하기를 눌렀는데, 저장 완료 혹은 저장 실패 팝업이 두 번 불리는 게 아닌가?로직에서 문제가 있었나 싶어서 팝업을 호출하는 부분에 브레이크 포인트를 찍어보았는데, 브레이크 포인트도 한 번만 잡혔다!!왜 팝업 호출은 한 번 만 되는데 뷰는 두개가 불리지...? 이거 엑스코드 잘못 아니야?! 라고 괜한 탓을 해보았지만.언제나 코드는 거짓말을 안하는~ 응 동일한 뷰모델 공유한 내 잘못~현재 내 프로젝트에는 프로필 이미지를 볼 수 있는 순간이 두 번 존재한다.1. 처음에 프로필을 다 생성한 후 2. 마이 페이지에서 프로필 카드 버튼을 누른 경우뷰에는 차이가 있기에 각기 다른 뷰를 만들고 뷰모델만 공유해 줬었는데, 이때 각자 다른 뷰모델을 생성해서 넣어준 것이 아니라 DIMa.. 2024. 7. 4.
[iOS/Swift] UIView to UIImage without Display 요즘 IT 동아리 프로그라피에서 사이드 프로젝트를 하는 중이다. 프로필 이미지를 만들어서 보여주는 프로젝트인데, 1:1 정방향의 프로필과 3:4 세로형의 프로필 사진 구현을 보여주면서 고민이 생겼다. 디자인 상 이미지 밑의 버튼이 겹치지 않기 위해 3:4 세로형의 height를 미리 구현한 뒤 이미지로 만들어 저장하고 보여줄 때는 가로 넓이를 세로 길이에 맞추어 줄이는 형식으로 구현해야 했다.물론, 이렇게 보이는 것과는 다르게 이미지로 저장하기를 누르면 3:4의 경우 옆의 회색 없이 카드 이미지만 저장되어야 했다. 때문에 view 계층의 제일 밑에서 CardView를 그리고, 해당 UIView를 UIImage로 저장하여 불러왔다. 그런데 이때 시점의 차이 때문에 UIImage가 뜨지 않았다. 고민하다 처.. 2024. 7. 2.
[iOS] ARC_객체 수명, weak와 unowned 차이 Swift에서 struct와 같은 값 타입이 아니라, class와 같은 참조 타입을 사용하면 참조 카운트, Reference Count가 발생하게 됩니다. 이는 애플에서 메모리를 관리하는 방법으로 메모리를 할당하거나, 참조할 때 카운트를 증가시키고 사용을 완료하면 감소시킵니다.Objective -C에서는 이를 개발자가 직접 관리했었고, 그것을 MRC Manual Reference Counting 이라고 부릅니다.그리고 현재 Swift에서는 직접적으로 참조 카운트를 삽입하고 해제하는 코드를 작성할 필요 없습니다. complier가 컴파일 타임에 자동으로 구문 분석을 통해 알아서 관련 코드를 삽입하여 메모리 관리를 해주는데 이를 ARC Automatic Reference Counting이라고 합니다.. 2024. 3. 21.
[iOS] Swift의 컴파일러 _ LLVM ❤️ Swift Compiler _ LLVM LLVM은 2000년 일리노이 대학에서 Chris Lattner 외 몇 명으로 구성된 연구 팀에서 프로그래밍 언어의 정적 및 동적 컴파일을 모두 지원할 수 있는 현대적인 컴파일 전략을 제공하기 위한 연구 프로젝트로 시작되었다. intermediate / binary 기계 코드를 구성, 최적화, 생성하는 데 사용되는 라이브러리로 프로그래머가 작성한 코드를 컴퓨터가 읽을 수 있는 intermediate, binary 코드로 컴파일 하는데 사용된다. 📒 컴퓨터의 하드웨어는 Binary Code만 읽을 수 있다. 때문에 우리가 작성한 코드들을 하드웨어가 읽을 수 있게 바꿔주는 작업을 거쳐야 하는데 이때 Intermediate Representation, 즉 중간표현을.. 2024. 3. 12.
[iOS] Image url 통해 가져와서 view에 띄우거나 갤러리 다운로드하는 방법 2가지 비교 이번에 unsplash의 api를 받아서 json 데이터를 확인해보니 신기한 점이 있었다. image는 따로 url 종류로 주어지고, 해당 url을 다시 받아와서 사용해야 한다는 것! 때문에 image를 다운로드 하여 imageView에 넣어주는 protocol을 하나 만들었다. protocol ImageViewDownloadable { var imageView: UIImageView { get set } } 그리고 extension으로 이 프로토콜을 채택하고 있다면 image를 보여줄 수도 있고, 갤러리에 다운받을 수도 있는 메서드들을 각각 구현하였다. 1. URLSession.shared.dataTask , @escaping closure 그렇게 만든 첫 방법은 dataTask의 @escaping c.. 2024. 2. 14.