묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결야곰의 스위프트 기본 문법 강좌
강의+교재 질문) didSet 실행되지 않음
안녕하세요 야곰님 야곰님의 스위프트 교재도 함께 보고있습니다. [ didSet 감시자 코드블록 내부에서 oldValue 값을 참조하지 않거나 매개변수 목록에 명시적으로 매개변수를 적어 (didSet(oldValueName) 주지 않으면 didSet 코드 블록이 실행되지 않습니다. ]NOTE 내용에서 발췌한 부분인데요 아무리 .. 테스트 해 보려고해도 didSet은 계속 호출되는데 어떻게 해야 학습해 볼 수 있을까요 ?
-
미해결[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기
NavigationBarItems Deprecated
NavigationbarItem -> .toolbar로 바뀐 코드가 궁금합니다.
-
미해결앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
메모의 그룹을 클릭할때마다 항목이 틀리게 나옵니다.
안녕하세요. 강사님메모앱을 실습하던중에 질문 사항이 있어 이렇게 글을 올립니다.그룹을 선택하면 그 그룹에 속한 메모들이 제대로 보이긴 한데, 그게 때에 따라서 틀려진다는게 이해할 수가 없어서 질문드립니다.제가 어디서 잘못 코딩을 했는지 그 부분을 찾지를 못했습니다.그래서 이미지라도 올립니다. 위 그림 처럼 같은 그룹인데도 그룹을 클릭할때마다 메모 리스트의 항목이 틀리게 나옵니다.한번 봐주시면 감사하겠습니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
참고 코드 자료 7-StructuredConcurrency(102, 103줄) 오타?
자주하는 질문 모음링크: https://pointed-earwig-996.notion.site/Swift-Concurrency-for-Swift-6-Part-1-22eecb0b83154ac28c7c66446f6e54e1?pvs=4 자주하는 질문을 먼저 확인 부탁드리며, 질문은 최대한 구체적으로하셔야 빠르게 답변드릴 수 있습니다. [질문 예시](1) 몇강, 몇초의 내용이 잘 이해가 안갑니다. (제가 적어놓은 강의 번호 "10강, 7분 강의 내용 중에... " )(2) 강의자료 몇페이지의 내용이 잘 이해가 안갑니다.(3) 정확하게 어떤 포인트에 대한 내용이 이해가 안갑니다. 다시 설명해주실 수 있나요? 동시성 강의 코드파일 7번(7-StructuredConcurrency(102, 103줄) ) 내용인데요전체코드func fetchAsyncLetTwoImages() async throws -> (UIImage, UIImage) { let start = Date() /// 구조적 동시성 작업의 생성 (하위 작업의 생성) async let image1 = try await fetchImage(num: 1) async let image2 = try await fetchImage(num: 2) let images = try await (image1, image2) print(Date().timeIntervalSince(start).formatted(.number.precision(.fractionLength(1)))) return images } 이렇게 되어 있는데 async let image1 위치에서 fetchImage(num:1)의 값을 기다리는 형태입니다. 아마도 이렇게 바뀌는게 맞지 않나 싶습니다. /// 구조적 동시성 작업의 생성 (하위 작업의 생성) async let image1 = fetchImage(num: 1) async let image2 = fetchImage(num: 2) 그런데 위의 코드는 순서대로 결과값을 받는 경우이고 아래 코드는 동시에 돌려서 빨리 나오는 결과값이 먼저 반영되나 싶었는데 그것도 애매하네요.A코드 /// 구조적 동시성 작업의 생성 (하위 작업의 생성) async let image1 = try await fetchImage(num: 1) async let image2 = try await fetchImage(num: 2)B코드 /// 구조적 동시성 작업의 생성 (하위 작업의 생성) async let image1 = fetchImage(num: 1) async let image2 = fetchImage(num: 2)실제로 두 코드를 돌려보니 A코드는 4.8 ~ 3.2초 걸렸는데 대략 평균적으로 3.6초 걸리고, B코드는 4.2 ~ 2.5초 걸려서 대략 평균적으로 3.3초 정도 걸리더라구요.image1과 image2는 try await Task.sleep(for: .seconds(2))가 걸려 있어 각각 2초씩이어서 동시에 돌아가서 결과를 받으면 2초 조금 넘을 것 같고 순서대로 받으면 4초 조금 넘을 것입니다. 그런데 두 코드 모두 4초가 안걸리는 경우가 많았다는 점에서 동시성이 적용되는 것 같습니다. 그런데 어떤 속도의 차이가 있을까 했는데 별 차이가 없는 느낌이기도 합니다.Claude에게 물어보니 A코드가 동시성의 효과를 보지 못한다고 하지만 속도 면에서 B코드가 특별히 빠르다고 단정하기도 애매해서요. 오타라고 생각되지만 A코드는 어떤 의미가 있을까 궁금합니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
3강 스레드 제어권 관리 질문드립니다
안녕하세요!3강 6분 30초 부터 “func2가 스레드 제어권을 운영체제에 양보했다가 func2의 실행이 끝나면 재개되고 함수가 리턴” 이라는 내용이 나오는데요.관련하여 아래 세 가지 문의 드립니다.재개 <- 운영체제에서 func2로 스레드 제어권이 돌아온다는 건가요? 어떤 의미로 쓰인 말인지 궁금합니다.func2가 리턴 될 때 스레드 제어권이 func2에 있었다면(1의 상황), 리턴 시점에 제어권도 func1로 돌아가는 게 맞나요? 결과적으로 func2가 리턴 될 때 스레드 제어권이 func2에서 func1로 양도되는 것은 GDC / Swift Concurrency 동일한건가요? 답변 주시면 감사하겠습니다. (_ _)
-
해결됨iOS 앱 수익화를 위한 시작, 스위프트 문법 마스터
앱에 누락되어 있어요
앱에 COW 내용이 누락되어 있네요
-
해결됨Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)
끝말잇기 로직 구현 중 ios 16 (iphone 16) 시뮬레이터 영어 입력 불가
안녕하세요!영상에서처럼 과거에는 한글입력이 어려웠는데, 이번에 새로 맥미니 m4를 구매한 후 최신 xcode를 사용해서 다시 공부하던 중입니다. 시뮬레이터가 오히려 지금 한글은 입력이 잘되는데(자간 모음 글자형태로 잘 만들어짐)영어가 입력이 안되네요,,,, 시스템상에서 한/영 은 잘 왔다갔다하고, 다른 웹이나 프로그램에선 한/영 잘 되는데, 시뮬레이터 안에서만 영어가 입력이 안되는건 혹시 어떤 문제인지 아실까요?
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
10번 강의 관련하여 질문드립니다.
안녕하세요. 10강 내용 중 질문이 있습니다.6분 20초 정도 시간대인데요.위 코드의 106 line에서의 쓰레드가 2번 쓰레드일 경우, doSomething() 메서드 자체가 2번 쓰레드에서 실행된다고 말씀하셨는데요. doSomething() 메서드가 2번쓰레드에서 실행될지, 다른 쓰레드에서 실행될지는 알 수 없는 것 아닌가요? 즉, async 메서드가 실행되는 쓰레드와 await 호출 직전 시점의 쓰레드가 반드시 같지는 않을 수도 있는 것으로 알고있어서 질문드립니다. 감사합니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
ImageProject 관련 문의
안녕하세요,ImageProject 관련하여 설명해주신 내용 중 궁금한 점이 있어 문의드립니다. 1.await imageDownloader.cache.keys.contains(url)와let keys = await imageDownloader.cache.keysif keys.contains(url)중에후자를 사용하는 것이 액터 재진입에 있어 더욱 안정적인 코드라고 말씀하셨는데요액터 재진입 관점에서는 전자의 코드가 actor isolated 된 상태에서 contain 여부까지 확인이 되고후자의 코드는 key값을 가져오고 contain 여부를 판단하는 시점에 actor에 다른 태스크가 진입하여 값이 변경될 가능성이 있기 때문에전자가 더 안정적인 코드가 아닌가요?어떤 이유 때문에 후자의 코드를 사용해야하는지 다시 설명해주시면 감사하겠습니다. 2. privatelet storage = DiskStorage()의 코드는Global actor 'ImageDatabase'-isolated default value in a actor-isolated context오류를 발생시켜 storage를 추후에 초기화 하도록 수정해주셨는데요privatelazyvar storage = DiskStorage()으로 하면 storage가 호출되는 시점에 초기화 되니 그 때에는 이미 actor의 격리영역이 정해진 상태라 이상이 없을 것이라고 생각했습니다만같은 오류가 발생하더라구요.@ImageDatabase 로 격리되어 있기 때문에 비동기적으로 초기화되어야 하지만 그렇지 못하기 때문에 오류가 발생하는 것인지 궁금합니다. 감사합니다.
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
패싱1강에서 강의중에 질문 있습니다.
패싱 1강에 20분쯤 강의에서 메모리에 올라오지 않고 메모리에 올라온다는 설명이 무슨 말인지 궁금합니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
비동기 반복문은 하나의 thread에서만 동작하게 되나요??
안녕하세요.강의를 통해 많은 도움을 받고 있습니다.!다름이 아니라, 17강 - 11분20초 부분에서 "작업의 결과를 모을 때는 하나의 thread에서만 동작하게 됩니다. 예를 들자면 2번 thread 하나에서만 비동기 반복문이 동작하게 되는거에요" 라고 설명을 해 주셨는데제가 이해한 바로는 'Swift Concurrency는 thread관점에서 벗어나서, Task라는 작업의 단위를 기준으로 비동기 관리를 한다' 라고 이해하고 있습니다.때문에, "비동기 반복문에서도 await을 통해 비동기 결과를 받고 있는데, 이 때 특정 thread에 고정된다는 것이 보장 될 수 있는건가?" 하는 궁금증이 생겨서 질문드립니다!만약 하나의 thread에 고정되어 있다면, group을 통해서 결과가 넘어오게 될 때, 자식 Task중 과도하게 오래걸리는 작업이 있다고 가정하면 비동기 반복문이 실행되는 특정 thread가 계속 blocking되는건가? 하는 의문이 들어서요,,,!
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
ViewBuilder 강의 관련 질문입니다.
강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요LocalViewBuilder에서 numberPlate에 ViewBuilder 매크로를 사용해야되는 이유를 LocalViewBuilder에 선언된 ViewType을 사용하려면 이라고 설명해주셨는 데, 그것과는 상관없이 numberPlate 안에서 분기 처리된 항목들(view1, view2, view3)이 다 다른 타입(Text, VStack, Image)이라서 ViewBuilder 매크로를 사용해야되는 것이 아닐까요 ?? 설명 듣다가 헷갈려서 질문드립니다.
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
34강 유용한 앱 추천에 나오는 UIKitViewer에 대해서 질문이 있습니다
해당 앱이 더이상 앱스토어에 보이지 않는데 혹시 대체할만한 다른 앱이 있을까요?
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
10강 내용 문의드립니다.
안녕하세요. 10강 내용 중 8분 40초 즈음에Task 가 여러 개일 경우 '동일 시점에 여러개의 쓰레드에서 접근/사용 가능성이 있기 때문에' Race Condition이 발생할 수 있다고 설명해주셨는데요. 교재 10p에서 'Task는 현재 실행중인 컨텍스트의 메타데이터를 그대로 상속해서 사용'한다고 설명하고 있고, 메타데이터에는 '실행 액터'도 포함되어 있어서(현재 시점에서는 액터를 쓰레드와 비슷한 의미로 이해하고 있습니다.) , Task 클로저 외부와 내부의 액터(~= 쓰레드?)는 같을 것 같은데요. 이로 미루어 봤을 때, Task 1과 Task 2의 클로저가 실행되는 쓰레드도 같아야 할 것 같다는 생각이 들더라구요.(swift 6모드에선 비동기 컨텍스트에서 Thread.current에 접근할 수 없어 swift 5 모드로 실행했습니다.)간단히 테스트 해봤을 때 위처럼 두개의 Task의 클로저가 실행되는 쓰레드가 메인 쓰레드로 같은데요. 이는 test() 메서드가 MainActor에서 실행되기에(@MainActor) 이와 같은 쓰레드에서 실행되는 것으로 이해했습니다.제가 잘못 이해하고 있는 지점이 있을 것 같은데요. 뒷 내용을 아직 듣지 못했지만 참지 못하고 질문드려봅니다! ㅎㅎ 답변해주시면 감사하겠습니다!
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
깃에 코드는 올려도 된다고 하셨는데
언급이 없어서 조금 애매한게 주사위나 가위바위보 이미지 처럼 수업자료에 포함되어 있는 에셋들의 경우엔 어떻게 되나요?에셋 파일을 빼고 올리는게 좋을까요 아니면 에셋파일 까지는 괜찮나요?
-
해결됨Xcode 3부터 16, 실리콘밸리 개발자의 15년 iOS 개발, Swift 핵심만
자료 다운로드 항목이 비어있어요
안녕하세요! 화면 처럼 자료 다운로드 내용이 비어있습니다 확인 부탁드립니다!
-
해결됨SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처
해당 강의는 추가 오픈하는건가요?
우선 좋은 강의 감사드립니다. 현재 오픈되어있는 강의를 모두 수강하였는데마무리가 안된거 같아 추가로 강의가 오픈되는건지 궁금합니다.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강기간 연장신청 드려도 될까요?
안녕하세요 앨런님!강의 구매 후에 나태함에 빠져있다가 이제라도 마음 다잡고 시작하려고 하는데 혹시 수강기강 연장신청 부탁드려도 될까요?
-
미해결iOS15 SwiftUI Preview 테크닉, 인앱결제(In-App-Purchase), StoreKit 2 WWDC2021
강의 중 사용하는 AI 툴
혹시 사용하시는 AI 툴은 뭘까요?
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
강의를 들으면서 생긴 질문이 있습니다.
안녕하세요, 강의를 들으면서 생긴 질문 세가지가 있습니다. 답변해주시면 너무 감사드리겠습니다. Swift Concurrency에서 NSLock을 사용해도 되나요? 이전 GCD환경에서 데이터 동기화를 위해 사용하던 NSLock을 Swift Concurrency환경에서 사용해도 같은 효과를 볼수있을지 궁금합니다. Actor에 접근할때는 await으로 Task를 따서 비동기적으로 접근하는데, 기존에 비슷한 참조타입인 class에 접근하는것보다 속도가 느려지는 이슈는 없을까요? cpu에서 context switch를 하면, 저장하고 로딩하는 동기화하는 작업때문에 컨텍스트 스위칭이 비효율적이다 라고 설명해주셨는데, 그럼 swift concurrency에서는 task가 다른 cpu(다른 쓰레드) 에서 재개되는것도 동기화작업이 필요할텐데 이 작업은 비싼(?) 비효율적인 작업이 아닌가요? 질문이 조금 많은데.. 액터까지 강의 들으면서 궁금했던 점이라 부탁드립니다.