STUDY 529

@StateObject @ObservedObject

generated by ChatGPT✅ @StateObject vs @ObservedObject 차이점둘 다 ObservableObject를 사용하는 방법이지만, 어디서 데이터를 소유하고 관리하는지가 다릅니다.1️⃣ @StateObject뷰에서 처음 생성된 ViewModel을 직접 소유뷰가 재랜더링되어도 상태가 유지됨새로운 뷰가 생성될 때 초기화가 한 번만 실행됨 💡 언제 사용해야 할까?✅ 뷰가 ViewModel을 직접 생성하고 소유할 때✅ 초기화가 여러 번 되면 안 되는 경우2️⃣ @ObservedObject뷰에서 ViewModel을 직접 소유하지 않음외부에서 주입받는 ViewModel을 사용할 때부모 뷰에서 전달된 ObservableObject를 계속 감시함 💡 언제 사용해야 할까?✅ 부모 뷰에서..

STUDY/Swift & iOS 2025.02.23

EnvironmentObject, StateObject

Generated by Grok 3 안녕하세요! SwiftUI에서 ContentView를 작성하면서 @EnvironmentObject와 @StateObject를 사용하는 상황에 대해 궁금하신 것 같아요. 이 두 속성 래퍼(Property Wrapper)는 객체를 관리하고 의존성을 주입하는 데 사용되지만, 목적과 동작 방식에서 차이가 있습니다. 아래에서 차이점을 자세히 설명드릴게요. 1. @StateObject 정의: @StateObject는 SwiftUI 뷰가 소유하고 관리하는 객체를 생성하고 유지하는 데 사용됩니다. 주로 뷰 내부에서 초기화된 ObservableObject를 저장하며, 뷰의 생명 주기와 연결됩니다.주요 특징:뷰가 처음 생성될 때 한 번만 객체를 초기화합니다.뷰가 재렌더링되더라도 객체가 ..

STUDY/Swift & iOS 2025.02.22

Xcode Preview/Emulator 관련 (1)

아이폰과 애플워치를 연동하려고 하는 과정에서 생긴 문제.xcode를 사용하면 preview라는 기능으로 내가 만든 기능을 미리 확인할 수 있다.1. 프리뷰는 에뮬레이터를 통해서 돌아간다.에뮬레이터를 미리 설치해야해야한다.필요하면 설치하라고 뜨는 것 같긴한데..2. 프리뷰에서 확인하려면 타겟 디바이스를 설정해야한다.아이폰 에뮬레이터는 웬만해선 바로 떴는데 애플워치 에뮬레이터는 계속 Cannot preview in this file 이라고만 떴다. 타겟 디바이스가 잘못 설정되어있는 경우(애플워치 앱인데 프리뷰는 아이폰 에뮬레이터)에 이런 에러가 발생한다.타겟 디바이스를 변경하는 곳엔 최근 사용한 것 위주로 뜨기때문에 처음 설치하면 안 보일수 있다. (이거 고정할수 있는 방법을 잘 모르겠음)이럴땐 상단바에서 ..

STUDY/Swift & iOS 2025.01.30

Rust - 27. 최종 프로젝트 (2) - 러스트 공식문서 끝

1회독 끝! 싱글 스레드 서버를 멀티스레드 서버로 바꾸기 use hello::ThreadPool; use std::{ fs, io::{prelude::*, BufReader}, net::{TcpListener, TcpStream}, thread, time::Duration, }; fn main() { let listener = TcpListener::bind("127.0.0.1:7878").unwrap(); let pool = ThreadPool::new(4); for stream in listener.incoming().take(2) { let stream = stream.unwrap(); pool.execute(|| { handle_connection(stream); }); } println!("Sh..

STUDY/Rust 2024.04.07

Rust - 25. 고급 기능 (3) 고급 함수와 클로저, 매크로

너무 길어서 한번 더 끊음. 매크로 부분은 이해가 안가서 그냥 빠르게 읽고 넘어갈예정임 1.. 고급 함수와 클로저 1.1. 함수 포인터 fn add_one(x: i32) -> i32 { x + 1 } fn do_twice(f: fn(i32) -> i32, arg: i32) -> i32 { f(arg) + f(arg) } fn main() { let answer = do_twice(add_one, 5); println!("The answer is: {}", answer); } 일반함수를 함수에 전달할수 있음. 새로운 클로저를 정의하는 대신 이미 정의된 함수를 전달하고 싶을때 사용 매개변수에 fn 타입으로 정의하면됨. 1.2. 클로저 반환 클로저는(fn 포함) 반환 타입으로 사용될수 없음 트레이트 객체에 감..

STUDY/Rust 2024.03.31

Rust - 24. 고급 기능 (2) 고급 트레이트, 고급 타입

너무 길어서 한번 끊음 1. 고급 트레이트 1.1. 연관 타입 트레이트 메서드를 정의할때 자리표시자 타입을 시그니처에서 사용할 수 있게 함. 타입 자리 표시자와 트레이트를 연결함 트레이트의 구현자는 자리표시자 타입 대신 구체적인 타입을 지정함 제너릭과의 차이는 제너릭은 각 구현마다 타입을 명시해서 사용해야함. 타입을 여러 개 사용할수 있음 연관 타입은 한 타입만 사용 가능함 1.2. 기본 타입 매개변수 제너릭 타입 매개변수를 사용하면 제너릭 타입에 대한 구체적인 타입을 지정할수 있음 연산자 오버로딩(std::ops)에 쓰임 1.3. 완전 정규화 문법 (fully qualified syntax) 같은 이름의 메서드 호출하기 trait Pilot { fn fly(&self); } trait Wizard { ..

STUDY/Rust 2024.03.31

Rust - 23. 고급 기능 (1) Unsafe RUST

얼마 안남았다~~~ 오예~~~ 3월내로 끝낼듯 1. Unsafe Rust 러스트가 보증하는 것의 일부를 거부하고 해당 보증을 수동으로 유지하는 것에 대한 책임을 지는 방법 unsafe 키워드 이 키워드를 사용한 블록은 안전하지 않은 코드(안전하지않은 슈퍼파워)를 넣을 수 있다. 원시포인터(raw pointer) 역참조 안전하지 않은 함수 혹은 메서드 호출 가변 정적 변수 접근 및 수정 안전하지 않은 트레이트 구현 union 필드 접근 위 다섯 가지 기능 제외한 다른 기능은 안전성 검사를 수행한다. 안전하지 않은 코드는 유효한 방식으로 메모리에 접근하도록 보장해야한다. unsafe 블록을 작게 만드는 편이 좋다. 문제의 원인을 더 쉽게 추적할수 있음 안전하지 않은 코드를 분리하려면 추상화 하고 api를 제..

STUDY/Rust 2024.03.31

Rust - 22. 패턴과 매칭

열거형할때 간단히 링크 남기고 넘어갔던 패턴에 관한 내용이다. 1. 패턴 타입의 구조와 매칭을 위한 문법 패턴에 매치되면 그다음 코드를 실행함 패턴은 아래를 조합해서 구성함 리터럴 값 (literals) 분해한 배열(destructured array), 열거형, 구조체, 튜플 변수 와일드카드 (wildcard) 자리표시자 (placeholder) match match VALUE { PATTERN => EXPRESSION, PATTERN => EXPRESSION, PATTERN => EXPRESSION, } 이전 게시글에 c의 switch와 비슷하다고 작성했었다. 표현식의 모든 값에 대한 경우의 수를 고려해야한다. 모는 가능성을 포괄하기 위해선 catchall 패턴을 사용할수 있다. `-` 이라는 패턴은 ..

STUDY/Rust 2024.03.26

Rust - 21. 객체 지향 프로그래밍

객체지향은 봐도 써먹질않아서 잘모르겠다. 객체는 속성과 행동을 갖는다. 속성은 변수고, 행동은 함수다. 정도? 상속 가능하다. 정도? 1. 객체지향 언어의 특성 객체(object) 객체는 데이터 및 데이터를 활용하는 프로시저를 포함한다. 프로시저들을 보통 메서드(method) 혹은 연산(operation)이라고 부른다. 러스트에서 구조체, 열거형, impl 등을 사용해서 동일한 기능을 제공할수 있다. 캡슐화(encapsulation) 객체의 상세 구현에 접근할 수 없게 하는 것. 객체와 상호작용하기 위해선 객체의 공개 API를 사용해야한다. 러스트에서 pub를 사용해서 데이터나 메서드를 공개할 수 있다. 상속(inheritance) 다른 객체의 정의로부터 요소를 재사용할수 있는 메커니즘 러스트에서는 상속..

STUDY/Rust 2024.03.25