iOS 22

[iOS]2025.06.04 Stack을 왜 쓸까?

함수 호출 시 지역 변수, 매개 변수, 리턴 주소 등이 왜 스택에 저장될까? 1. 함수 호출의 구조적 특성과 후입선출이 잘 맞기 때문func a() { b()}func b() { c()}func c() { print("Hello")}호출 순서는 a->b->c 이지만, 복귀 순서는 c->b->a마지막에 호출된 함수가 가장 먼저 종료되는 구조 -> 스택의 후입선출과 일치 2. 지역 변수와 매개변수는 호출될 때마다 새로 생성되고, 호출이 끝나면 사라지기 때문3. 리턴 주소를 저장해서 함수가 끝난 뒤 어디로 돌아갈지를 알려주기 위해func multiply(x: Int, y: Int) -> Int { let result = x * y return result}func main() { ..

iOS 2025.06.04

[iOS]2025.05.27 트러블 슈팅(스와이프, RxGesture)

문제 상황발생일시 : 2025.05.26발생환경 : Playground, Swift 5, macOS 사용기능 : 스와이프로 navigationController pop하기문제 내용 : UIGestureRecognizerDelegate를 통해 구현하였으나 스와이프가 안됨(가끔 럭키 스와이프가 될때가 있음) 원인 분석SceneDelegate에서 window의 rootViewController가 navigationController가 아니었음.(그냥 splashView였음)이후 splashView에서 MainViewController로 넘어가는 방식도 modal present였음.그러나 핵심 원인은 스와이프 방식이었음. 해결과정SceneDelegate의 window rootViewController를 navi..

iOS 2025.05.27

[iOS]2025.05.23 RxDataSources

CollectionView 에서 RxDataSources를 쓰려면 우선 CellModel : Cell에 들어갈 데이터 구조SectionModel : RxDataSources가 요구하는 구조, 섹션의 데이터 구조ViewModel : 비즈니스 로직CollectionViewCell : Cell UIViewController : CollectionVeiw UI 가 필요하다 CellModel에서는 Cell에 들어가는 데이터 구조를 먼저 정의해준다.import Foundationstruct Beach { let name: String let imageName: String let temperature: String let weatherStatus: String} SectionModel에서는 R..

iOS 2025.05.23

[iOS] 2025.03.24 클래스와 구조체

클래스와 구조체의 차이.클래스를 통해서 만들어진 인스턴스는 레퍼런스 타입.구조체를 통해서 만들어진 인스턴스는 밸류 타입. 클래스와 구조체 선택기준.값을 복사해서 사용하는 경우 - > 구조체(struct)* 값을 복사해서 가지만, 원본값은 변하지 않음!참조를 공유하며 상태를 변경해야 하는 경우 -> 클래스(class)* 메모리 주소가 복사되면서 원본과 복사본이 같은 인스턴스 값을 가지게 되면서 원본값이 변함. 더 정리해야할 부분들.  동적 메모리 할당프로그램 실행 중(RunTime)에 필요한 만큼 메모리를 할당하는 방식. 메모리메모리는 주소로 관리됨.메모리가 증가한다는 표현은 메모리 주소값이 커지는 방향으로 할당된다는 의미.CPU는 주소를 이용해 데이터 저장 위치를 찾음. "메모리가 증가한다" 의 정확한 ..

iOS 2025.03.24

[iOS] 2025.03.05 팀프로젝트(3)

팀 소개 앱 개발 프로젝트.스토리보드를 활용해서 두 개의 ViewController를 이용해서 만들어봄.*깔끔하게 만들려면 더 늘려도 되겠다는 생각이 들었음.(계속 공부해나가야 할 부분)//ViewController 화면import UIKitclass ViewController: UIViewController { @IBOutlet weak var firstTableView: UITableView! @IBOutlet weak var secondTableView: UITableView! let teamCharacteristic = [ ("우리팀의 특징", "개인의 성장과 팀의 발전을 함께 추구합니다."), ("궁극적인 목표", "하루 1%의 변화가 모이면, 1년 후 ..

iOS 2025.03.05

[iOS] 2025.03.04 팀프로젝트(2)

메인페이지와 하위페이지를 모달로 연결하고 싶은데 여전히 오류 발생함.우선 메인페이지만 만든 코드만 기록해보겠음.import UIKitclass ViewController: UIViewController { @IBOutlet weak var firstTableView: UITableView! @IBOutlet weak var secondTableView: UITableView! let teamCharacteristic: [String] = ["우리팀의 특징", "궁극적인 목표", "우리팀의 약속"] let teammate: [String] = ["🙋🏻‍♀️박혜민", "🙆🏻‍♂️김기태", "🙋🏻‍♂️김형윤", "💁🏻‍♂️변준영"] ..

iOS 2025.03.04

[iOS] 2025.03.03 팀프로젝트(1)

팀 프로젝트팀 소개 앱 만들기 와이어 프레임 앱의 골격이나 앱의 사용자 인터페이스(UI) 및 핵심 기능을 나타내는 단순한 선과 도형으로 구성된 다이어그램 또는 다이어그램의 집합.레이아웃, 주요 색상, 페이지 구성 및 클릭 시 전환 등의 내용. 1. 아이디어 회의각자가 생각하는 앱을 와이어 프레임을 통해 만들어보고 서로 공유함.어플 로딩화면메인화면 : 팀 소개부분과 팀원 소개부분(이름과 이미지로 구성)상세화면 : 상세 정보를 새창으로 구현 2. 와이어 프레임 결정 메인화면팀 소개(특징, 목표, 약속) 노출팀원 소개(mbti) 노출 상세화면사진, 장점, 스타일, 블로그 주소 기재 부가기능 : 하단 내비게이션 바, 팀원 추가 버튼 3. 튜터(이현호 튜터) 피드백크게는 개발을 왜하는지, 작게는 기능이 왜 필요한..

iOS 2025.03.03

[iOS] 2025.02.26 Combine

Combine 프레임 워크:Apple에서 제공하는 반응형 프로그래밍(Reactive Programming) 프레임워크데이터를 비동기적으로 처리하고, 이벤트를 선언적으로 처리하는 데 사용. 주요 개념Publisher : 데이터를 제공하는 주체.Subscriber : 데이터를 수신하고 처리하는 주체.Operators : 데이터를 변환하거나 필터링하는 중간 연산자.Combine의 흐름 :Publisher -> Operator -> Subscriber sink는 Combine 프레임워크에서 Publisher의 값을 구독하고 처리하는 메서드임.즉, Publisher에서 발행한 값을 받아 원하는 동작을 수행하는 역할을 함. 직접 구현해보기Step 1 : Combine 기본 구현1. 간단한 Publisher와 Sub..

iOS 2025.02.26