iOS/Swift(6)
-
Lv3 프로그래머스 퍼즐 조각 채우기 풀이 과정 (Swift)
개요 여느 때 처럼 코딩테스트 준비를 위해 프로그래머스를 풀던 중, 거의 이틀을 머리 아프게 만든 문제를 발견습니다. 너무나도 어렵고, 써야 하는 코드도 방대했지만 꽤나 재밌고 뿌듯했던 풀이 과정을 정리해 보려고 합니다. (+ 혹시나 누군가에겐 도움이 될 수도 있으니..!) 참고로 보완이 많이 필요한 코드입니다. 우선 풀이 과정을 적고 추후 더 디벨롭을 해 보기로..! 문제 분석 우선 이 문제는, 프로그래머스 고득점 Kit 모음의 DFS/BFS 카테고리에 속해 있고 Level 3이라 제겐 굉장히 고난이도인 문제였습니다. 문제: 퍼즐 조각 채우기 요약 왼쪽의 game_board의 빈 칸에 오른쪽 table에 있는 퍼즐 조각을 최대한 많이 넣어서, 총 몇 칸을 채울 수 있는지를 리턴하는 문제. 조건 조각은 ..
2023.04.14 -
클로저에서의 weak self — 순환참조 (2)
https://mila00a.tistory.com/63 ARC를 곁들인 순환참조 (1) 혹은 순환참조를 곁들인 ARC… ARC (Automatic Reference Counting) Swift에서 앱의 메모리를 관리하는 방법 간단하게는 자동으로 메모리를 관리해주는 녀석이라고 할 수 있다. 여기서 ‘메모리’ 란? 우선 mila00a.tistory.com 오래 걸렸다. 위 1편에 이어 드디어 순환참조에 대한 두번째이자 마무리 글이다. 원래 궁금했던 내용인 왜 클로저 안에서 [weak self] 를 사용해야 하는가를 정리해 보았다. 내용을 적기 전에 공부하면서 참고했던, 클로저에서의 약한 참조에 대해 가장 잘 정리한 블로그 글을 먼저 공유! https://noah0316.github.io/Swift/2022-..
2023.04.12 -
ARC를 곁들인 순환참조 (1)
혹은 순환참조를 곁들인 ARC… ARC (Automatic Reference Counting) Swift에서 앱의 메모리를 관리하는 방법 간단하게는 자동으로 메모리를 관리해주는 녀석이라고 할 수 있다. 여기서 ‘메모리’ 란? 우선 여기서 메모리는 Heap을 의미한다. Swift에서 인스턴스나 클로저 같은 참조(Referene) 타입들은 자동으로 힙에 할당이 된다. 그런데 Heap은 반드시 사용 후에 메모리 해제를 해 줘야 하는데.. 우리는 한 기억이 없다 → 진짜 그런가? 진짜 메모리 해제를 꼭 해 줘야 하나? 안해주면 어떻게 되나? → 메모리 누수 (필요없는 메모리 사용량 증가, 앱이 죽을 수 있음) 어쨌든 우리가 하지 않아도 되는 이유는 ARC가 대신 해 주고 있기 때문! 필요 없는 메모리를 자동 해..
2023.04.12 -
[iOS] Xcode - Preview에 Binding 변수 값 넣기
Xcode에서 신나게 개발을 하다가 Canvas에서 Preview를 확인하려 하는데, Preview에 Missing argument for parameter... 라는 에러가 뜰 때가 있다 그럼 더미 변수값을 만들어서 넣으면 될텐데 만약 Binding 변수라면 어떨까? 바인딩 값을 받아올 수 없는 Preview에서 사용할 수 있게 해주는 게 바로 .constant() 타입 메소드다 아래와 같이 사용하면 된다 struct TestView: View { @Binding var bindingVar: Bool var body: some View { ... } } struct TestView_Previews: PreviewProvider { static var previews: some View { TestVie..
2022.07.13 -
[iOS 노트] Swift 에서는 숫자에 언더바(_)를 넣을 수 있다
Swift에서는 숫자에 언더바를 넣을 수 있다 만약 가격이라면, 이렇게 적으면 좀 헷갈린다 var price: Int = 100000000// 얼마? 근데 이렇게 언더바를 활용하면 여전히 얼마인지 모르겠지만 유추하기가 훨씬 쉽다 var price: Int = 100_000_000// 1억
2022.07.07 -
[iOS 노트] 커스텀 폰트 사이즈를 사용하면 안되는 이유
이유는 바로 접근성 (Accessibility) 시력의 문제로 휴대폰 자체 시스템의 폰트 크기를 크게 보시는 사람들이 있다. SwiftUI의 경우 Text("안녕하세요") .font(.title) 이렇게 시스템 폰트 크기를 사용하면 사용자 환경에 맞춰서 폰트 크기가 달라지지만, Text("안녕하세요") .font(.system(size: 18)) 이렇게 지정을 해 버리면 모든 기기에서 똑같은 폰트 크기가 유지되기 때문에 저시력자들을 충분히 고려하지 못하게 된다. 아예 안된다! 는 아니지만 접근성을 위해서는 최대한 시스템 폰트 크기 사용하기!
2022.07.07