분류 전체보기164 250713 TIL | MVC 패턴으로 구조 바꾸기 안녕하세요?오늘은 BMI 계산기 프로젝트를 MVC 패턴에 맞게 리팩토링했어요ViewController에 있던 비즈니스 로직을 Model로 분리함!!! MVC 패턴... 이해는 되는데 막상 변경하려면 아직 감이 잘 안잡힘,,,! 연습할게요오늘 한 일CalculateViewController에서 BMI 계산 로직 제거하고 Model에 위임함CalculateBrain 모델 생성해서 계산 책임 분리최종 CalculateBrain.swiftimport UIKitclass CalculateBrain { private var bmi: BMI? func calculateBMI(height: Float, weight: Float) { let value = weight / pow(height, 2) if v.. 2025. 7. 13. 250701 | progressBar가 작동을 안한다 | 해결 방법! 안녕하세요 벌써 7월이네요 꺅 그럼 오늘의 깨달음(?) 정리 레츠고 문제 상황 : 타이머 앱 만들면서 progressBar가 안 움직이는 현상 발생 passedTime, totalTime 제대로 선언했는데도 작동이 이상함var totalTime = 0//... 중략guard let totalTime = self.eggTime[title] else { return } 여기서 let totalTime을 지역 변수로 다시 선언하고 있었음그래서 @objc func updateTimer()에서 쓰는 self.totalTime은 그대로 0인 상태로 유지됨==> passedTime / totalTime은 결국 0으로 나눔 시도하거나 조건 안 맞아서 타이머가 멈춰버림 -> 해결 방법guard let time = sel.. 2025. 7. 1. 250622 TIL | 기능 구현 팁, switch / enum, 초기화, 패턴 등 안녕하세요 오늘의 공부 내용 정리 시작 ~!개발 마인드셋여러 기능이 얽혀 있더라도 하나씩 나눠서 구현해보면 결국 풀리게 됨→ 처음부터 전체 구조를 다 알 필요는 없음. 구현하며 감을 잡으면 됨같은 기능이라도 다양한 방식으로 구현해보는 습관이 중요→ 손발이 자유로워짐 = 구현 능력이 높아짐예: if ↔ guard, switch ↔ if elseObjective-C 함수 제약@objc로 선언된 함수는 파라미터를 직접 전달할 수 없음→ 주로 Selector 기반으로 동작 (예: 버튼 액션 연결 등)@objc func buttonTapped() { // 파라미터 없는 함수만 가능}코드 스타일 / 표현력Depth(들여쓰기)권장: 1단계, 최대: 2단계그 이상은 함수 분리, 로직 분리해서 구조 정리해야 함조건.. 2025. 6. 22. 250615 TIL | 사이판에서 돌아왔아요 ㅇ안녕하세요 저입니다. 요즘 공부를 왤케 안했냐면요 싸이판 갔다왔서요!!! 안물어봤다고요? 넵 ㅠㅠ 그럼 오늘 공부한 내용 스타트~ iOS 앱 구조와 UI 기초 개념 정리SceneDelegate vs AppDelegateAppDelegateapplication(_:didFinishLaunchingWithOptions:) 등을 통해 앱 초기 설정 가능→ 다른 사람이 만든 프로젝트를 처음 볼 때 AppDelegate부터 보면 흐름 파악에 도움 됨(저도 얼릉 입사해서 앱델리게이트로 코드 파악하고시버요 ^_^)앱 전체 생명 주기를 다룸. 앱이 실행될 때 가장 먼저 실행되는 객체SceneDelegate앱의 각 UI 씬(Scene) 단위 생명 주기를 관리함→ 필요한 기능이 있다면 공식 문서/검색 통해 그때그때 찾아.. 2025. 6. 15. 250529 TIL | 코드로 Navigationcontroller 구현하기 코드로 내비 구현하기func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) let naviController = UINavigationController(rootViewController: ViewController()) window?.rootViewController = naviController .. 2025. 5. 29. 250523 TIL | firebase SPM과 Pod이 꼬이다... 해결방법...! 안녕하세요? ㅠㅠ한시간 반에 걸쳐 SPM과 Pod 설정 중 꼬인 문제들을 드디어 해결했다 ㅠㅠㅠㅠㅠㅠㅠ Access level on imports require '-enable-experimental-feature AccessLevelOnImport' 이런 오류가 발생함 SPM 해결 안돼서 pod으로 다시 돌아가기로 결정,package가서 firebase 삭제함 ㅜ 근데 삭제 안됨 ㅜ다시 SPM으로 도전.. 응 무한 실패 * 10000 각설하고 저 문제는 firebase sdk 버전이 맞지 않아 생긴 오류 package dependencies 가서 삭제하지 말고 여기서 삭제해야함 사실 삭제 안해도 되고 버전 10.24.0으로 맞춰줘서 해결!!!!!! 버전 낮추세요!!!!!!!!!원래는 11.??.??.. 2025. 5. 23. [Swift] TableView의 모든 것을 알아보기!!! 안녕하세요..? 저는 ㅇㅅㅈ이고요오늘은 테이블뷰에 대해서 좀 더 자세히 공부해보았어요 그럼 정리 시작! iOS 앱 개발에서 많이 쓰이는 UI 컴포넌트 중 하나가 바로 UITableView! (그치만 컬랙션뷰가 더 많이 쓰인다는 사실)수십 개, 수백 개의 데이터를 스크롤 가능한 리스트 형태로 보여줄 때 사용하며, 성능과 유연성 모두 뛰어남이 글에서는 TableView의 기본 구조부터 작동 메커니즘, 실전 코드까지 차근차근 정리해보겠어요TableView란?iOS에서 여러 개의 데이터를 세로 방향으로 나열해 보여주는 컴포넌트-> 그래서 위아래로 쭈르륵 스크롤 가능)UICollectionView보다 구조가 단순하고 리스트 형태 UI에 최적화되어 있음-> 현업에서는 더 고도화된 사용을 위해 컬랙션 뷰를 주로 쓴다.. 2025. 5. 20. 250520 TIL | 셀 재사용부터 앱 생명주기까지 안녕하세요?오늘은 셀 재사용, 앱 생명주기, if/guard 문 등등 많은 내용을 정리해보았서요!그럼 렛츠고셀 재사용과 메서드prepareForReuse()란?UITableViewCell 또는 UICollectionViewCell의 재사용 직전에 호출됨셀에 남아있는 이전 상태 초기화용으로 주로 사용ex: 이미지 초기화, 텍스트 리셋 등if문, guard, 클로저, 옵셔널 처리if 분기문이 많으면 초보 개발자 티 남→ 로직 분기 단순화하거나 함수 분리 고려삼항연산자는 ()로 감싸면 가독성 좋아짐guard 구문에는 비즈니스 로직 넣지 않기→ 유효성 검사만 하는 게 좋음guard / if는 옵셔널 바인딩 도구일 뿐, 자체가 바인딩 로직은 아님클로저 안에서 self에 ? 붙이면 안전한 참조 가능→ [weak s.. 2025. 5. 20. 250511 TIL | 메모리 누수, Firebase Firestore, SPM, TableViewCell 등등 안녕하세요? 오늘은 많은 내용들에 대해 공부했어요그리고 그걸 정리해봤답니다그럼 레츠 고async/awaitSwift 5.5부터 등장한 비동기 문법Swift 6부터 완전히 안정화됨기존 콜백 기반 코드를 가독성 좋게 개선 가능ARC & Memory Leak메모리 누수(memory leak)는 강한 참조 사이클로 발생주로 클로저에서 [strong self] 사용 시해결: weak self → 캡처된 객체가 옵셔널됨레거시 코드에서 unowned → weak으로 변경 권장Xcode의 Memory Graph, 외부 메모리 누수 탐지 라이브러리(memory leak detector)로 추적 가능ARC(Automatic Reference Counting)는 과제 전형 평가 항목에 포함되기도 함코드 스타일 / 가독성gu.. 2025. 5. 11. 이전 1 2 3 4 5 ··· 19 다음