안녕하세요 강사님 좋은 강의 잘 수강하고 있습니다! 강의에서 @Observable 사용시 큰 설명 없이 넘어가셔서 개인적으로 알아보는 중입니다 [SwiftUI] Observable macro를 통해 모델 데이터를 만들고 관리하는 방법 (tistory.com) [SwiftUI] iOS17 이후의 상태 관리 (velog.io) [SwiftUI] @Observable 매크로 (1) (tistory.com) Discover Observation in SwiftUI (feat. WWDC 2023) :: iOYES (tistory.com) 등 위의 링크들을 살펴보았지만 초보자인 제가 이해하기엔 어려운 내용들이었습니다 그래서 강사님 강의 중 SwiftUI의 Property Wrapper(@State, @Binding...) 를 구입해봤지만 아쉽게도 @Observable이 아닌 구 버전의 프로퍼티 래퍼인 @ObservableObject를 설명해주시더라구요(이 부분은 아쉬웠지만 나머지 래퍼들을 공부하는 데에는 정말 좋은 강의라고 생각합니다!) 일단 강의의 흐름을 보면 @State와 묶어서 설명하시길래 @State는 변수의 변화를 감지하기 위한 래퍼이고 @Observable은 class나 구조체 내 멤버 프로퍼티 값들이 변경되는 걸 감지하기 위한 래퍼라고 이해했는데 맞게 이해한 걸까요..? 답변 주시면 감사하겠습니다!! 좋은 하루 보내세요!
안녕하세요. 강사님께 문의드릴 곳이 현재 수강중인 강의의 질문게시판밖에 없는 것 같아서 여기에 올립니다! 양해 부탁드려요 ㅜㅜ 다름이 아니라, iOS Clean Architecture & MVVM: RxSwift 완전 정복 강의 내용이 Swift 6의 새로운 동시성 모델을 반영한 내용인지 궁금합니다. 만약 그렇지 않다면 Swift 5.x 버전의 컴파일러를 기준으로 강의 내용을 따라가면 되는 건가요? 답변 미리 감사드립니다.
grpc.resource_quota=0x600000cab5a0, grpc.server_uri=dns:/// firestore.googleapis.com }}: connect failed (UNKNOWN:(domain:NSPOSIXErrorDomain, code:50, description:The operation couldn’t be completed. Network is down) 위의 오류가 발생하는데 로그인 정보는 제대로 출력되는데 다른 부분에서 데이터를 불러오지 못하는데 어떤 부분을 수정해보면 좋을까요?
안녕하세요 좋은 강의 잘 듣고 있습니다. 다름이 아니라 혹시 애플 공식 문서보는 강사님만의 꿀팁 같은게 있을까요? 공식문서를 찾아볼 수 있긴 한데 찾고자 하는걸 정확하게 검색해야 결과를 얻을 수 있고 뭔가 보기가 어렵게 되어 있는 것 같아서요... 그리고 제가 원하는 기능을 구현하려면 물론 구글링도 있지만 공식문서를 최대한 참고해서 구현 방법을 익히고 싶은데 이런 것들은 공식 문서에서 어떻게 검색해야 하나요? 예를 들어 SwiftUI에서 반복문으로 이루어진 텍스트들을 한번에 지우는 기능을 구현하고 싶은데 이에 연관된 것들을 공식 문서에서 쉽게 찾는 방법 등을 알고 싶습니다. 감사합니다.
FeedView만들기 전 단계, 리팩토링하기 전단계까지 모두 동일하게 코드를 작성하고, 틀린부분 있는지 빠트린 부분 있는지 확인을 다했는데요. 프로필 편집 사진과 네임, 유저네임, 소개 모두 다 시뮬레이터 홈버튼 더블클릭 후 밀어내기해서 끄고, cmd + R이나 시뮬레잍터 상의 앱을 클릭해서 키면 모든게 리셋되네요. 그런데 로그아웃 후 재로그인하면 또 사진과 네임, 유저네임, 소개가 제대로 뜹니다. 어디 부분이 문제가 있는걸까요??
안녕하세요 @Observable 이 부분에서 에러가 발생해서 질문드립니다 현재 맥북 버전은 Sequoia 15.0이며 Xcode 버전은 16.0을 사용 중입니다 Observable()' is only available in iOS 17.0 or newer라는 에러가 발생한 상황입니다 구글링을 해도 해결방법을 찾지 못해서 질문드립니다..! 그리고 추가적으로 Xcode 16으로 업뎃 후 프리뷰 화면 보여주는 단축키인 cmd+option+enter를 아무리 눌러도 프리뷰가 xcode에서 보이지 않는 상황입니다.. 마지막으로 제가 질문드렸던 다른 게시글인데 확인 한 번 부탁드리겠습니다 VStack, HStack으로 뷰 구성하기 강의 padding 질... - 인프런 | 커뮤니티 질문&답변 (inflearn.com) 답변 주시면 감사하겠습니다!
안녕하세요! 좋은 강의 잘 수강하고 있습니다. [계산기 #6 - 경고! 값을 입력하세요!] 강의에서 19분 4초 에 함수 호출 방법 설명이 나와있는데 함수 정의에 parameter라고 하고, 함수 호출시에는 argument라고 하는 걸로 알고 있습니다. 잘못 표기된 걸까요..? 아규먼트 레이블 같은 개념과도 혼동될수 있을 것 같아서요
안녕하세요. 강의 중에 설명해주시는 내용 중 Development info > Main interface 설정하는 부분이 안보여서 질문드립니다. 최신 xcode, mac 버전을 사용하고 있어 업데이트가 된 거 같은데 어디에서 설정할 수 있을까요? 강의 중 화면 제 화면 .
2024년 9월 20일경 업데이트 있어서 했더니 이상하게 새 프로젝트부터는 네비게이션창의 파일들이 드래그 엔 드롭이 안됩니다.ㅠㅠ 파일이 폴더를 오고가긴해도 기존버전처럼 파일 순서를 의지대로 변경 못하고, 알파벳 순으로 고정되네요. 찾아서 자동정렬 같은걸 비활성화 하는걸 해보려고해도 찾질 못해서 질문드려요.
안녕하세요. 먼저, macOS를 Sequoia로 업데이트 하면서 Xcode도 15에서 16으로 업데이트 했습니다. 강의 6분 50초 정도부터 navigationTitle 관련된 코드 작성을 해주시는데 이전 OS나 Xcode15에서는 강의 내용대로 작성하면 제대로 되었던게 업데이트를 하고나니 안되더라구요. 찾아보니 Xcode 16에서는 내비게이션 타이틀과 툴바의 상호작용이 일부 변경되었다고 합니다. 하단에 .navigationBarTitleDisplayMode(.inline) 을 추가하니 강의 내용과 동일하게 나타났습니다. 코드는 아래에 첨부하겠습니다. .navigationTitle("프로필 편집") .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden() .toolbar { ToolbarItem(placement: .topBarLeading) { Button { dismiss() } label: { Image(systemName: "arrow.backward") .tint(.black) } } } 게시판 내용과 어긋나거나 잘못된 정보면 말씀해 주세요. 감사합니다.
안녕하세요, 우선 좋은 강의 제공에 감사드립니다. 상세한 설명과 자세하게 보여주시는 실습 단계 덕분에 도움이 많이 되고 있습니다. 다름이 아니라, Fairplay DRM 복호화 단계 중 아래처럼 오류가 발생하는데 해결이 되지 않아 문의드립니다. (가린 부분은 가상환경 이름과, 파일 경로, 진단대상입니다) 해당 오류를 해결하기 위해 Frida 버전 업그레이드, 재탈옥 후 프리다 서버 재설치, 프리다 서버 버전과 클라이언트 버전 동일한지 확인, iOS 버전보다 높은 Frida 버전인지 확인을 모두 진행했으나 동일한 오류가 발생합니다. 추가적으로 대상 프로세스가 ASLR을 사용한다면 프로세스 덤프 시 문제가 있을 수도 있다고 하여 확인해보려고 했으나 동일한 오류가 발생합니다. 혹시 추가적으로 해볼 조치나 짚이시는 문제점이 있을지 여쭤봅니다. 감사합니다.
import UIKit class TestClass {} class SomeClass { var a = 10 var b = TestClass() func myFunc() { print(self.a) } lazy var myClosure1: (()->Void)? = { () -> Void in print(self.a) } lazy var myClosure2 = { [a] () -> Void in print(a) } lazy var myClosure3 = { [b] in print(b) } deinit { print("SomeClass deinit") } } var myClass1: SomeClass? = SomeClass() var myClass2 = myClass1 var myClass3 = myClass1 var myClass4 = myClass1 myClass1?.myClosure1 myClass1?.myClosure1 = nil myClass1?.myClosure2 myClass1?.myClosure3 myClass1 = nil myClass2 = nil myClass3 = nil myClass4 = nil 위 코드에서 myClusore3 의 캡쳐 리스트엔 b를 작성했고, b는 클래스의 인스턴스로 참조타입으로 알고 있습니다. 이 때 위 코드를 실행하면 deinit이 실행되는데요. weak 키워드를 사용하지 않았는데도 deinit이 실행되는 이유가 있을까요?
안녕하세요 강의 수강 중 이해가 안되는 부분이 있어서 질문 드립니다 import SwiftUI struct ContentView: View { var body: some View { VStack{ HStack{ Image("dogProfile") .resizable() .frame(width: 120, height: 120) .clipShape(Circle()) .overlay( Circle() .stroke(Color.teal, lineWidth: 3) ) VStack(alignment: .leading){ Text("이름: 키도") Text("시바견") Text("2017년 5월생") } // VStack 안에 있는 뷰에 모디파어어를 일괄 적용하고 싶을 경우 이런 식으로 구성할 수 있다(일괄 적용이라는 표현보단 Vstack 자체에 모디파이어를 적용했다는 표현이 더 옳을지도? .font(.system(size: 20)) // 정보 글의 폰트 사이즈 .padding(.leading, 20) // 그림과 정보 글 사이의 공백 } .padding(.bottom, 20) VStack(alignment: .leading, spacing: 10){ Text("좋아하는 것") .font(.system(size: 20)) .bold() Divider() // 좋아하는 것 밑에 있는 선을 그려주는 함수 Text("- 각종 고기(🐮 = 🐷 = 🐔 > 🐟)") Text("- 장본 게 담겨 있는 종량제 봉투") Text("- 집에 새로 온 사람") } .padding() .background( RoundedRectangle(cornerRadius: 15) .fill(.mint) .opacity(0.2) // 색의 투명도를 지정하는 모디파이어 0이면 완전 투명 .shadow(radius: 5) ) VStack(alignment: .leading, spacing: 10){ Text("스킬") .font(.system(size: 20)) .bold() Divider() // 좋아하는 것 밑에 있는 선을 그려주는 함수 HStack(alignment: .top, spacing: 30){ VStack(alignment: .leading, spacing: 10){ Text("- 앉아") Text("- 엎드려(앉아와 자주 혼동함)") Text("- 하우스(집으로 들어가기)") } VStack(alignment: .leading, spacing: 10){ Text("- 손") Text("- 코") } } } .padding() .background( RoundedRectangle(cornerRadius: 15) .fill(.pink) .opacity(0.2) // 색의 투명도를 지정하는 모디파이어 0이면 완전 투명 .shadow(radius: 5) ) } .padding() // 질문인 부분 } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } } 위 코드 맨 마지막 padding을 보면 가장 처음 사용하는 VStack에 .padding을 적용하는 코드입니다 궁금한 건 저 padding의 값을 50, 100 이렇게 설정해도 Vstack의 위 아래 여백은 변하지 않는다는 점입니다. 분명 .padding에 값을 넣어주지 않으면 기본적으로 상하좌우 모든 부분에 여백을 주는 걸로 알고 있는데 만 상하 부분의 여백이 변하지 않는 것을 확인했습니다. 개인적으로 여백을 넓게 잡으면 여백을 잡기 위해 글자나 사진 사이즈 등이 뭉개지는 현상이 발생할 줄 알았는데 좌우는 뭉개지는 데 상하는 뭉개지지 않더라구요 Vstack이 기본적으로 가지고 있는 공간이 있는 최소한의 건지... 혹시 뭉개지지 않는 이유를 알 수 있을까요?? 그리고 혹시 // VStack 안에 있는 뷰에 모디파어어를 일괄 적용하고 싶을 경우 이런 식으로 구성할 수 있다(일괄 적용이라는 표현보단 Vstack 자체에 모디파이어를 적용했다는 표현이 더 옳을지도? 이 주석 제가 맞게 이해한 건지도 알려주시면 정말 감사하겠습니다..! 좋은 하루 보내세요! 감사합니다!
안녕하세요. 궁금한게 있어 글 남깁니다. Model과 View에는 struct를 사용해주셨고 ViewModel에는 class를 사용해주셨는데 이렇게 사용하는 것이 일반적이라고 생각하면 좋을까요? 강의를 보고 궁금하여 좀 찾아보니 참조 타입이나 값 타입에 대해 좀 알게 되었는데 크게 와닿지 않아서 일단은 외우고 진행해야하나 싶더라구요