묻고 답해요
152만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
5강 weak self 처리 관련
안녕하세요! Swift Concurrency 강의 너무 잘 듣고 있습니다. 5강 weak self 처리 관련하여 질문이 있는데요. Task 클로저의 경우 작업이 끝나는 즉시 내부 클로저가 소멸하기 때문에 클로저 내부에서 캡처된 참조도 해조되어 강한 순환 참조가 발생하지 않는다고 나와있는데, 이는 DispatchQueue에 전달하는 클로저에서도 마찬가지 아닌가요? DispatchQueue에 전달된 클로저도 작업이 완료되면 메모리에서 해제되는 것으로 알고 있어서, 약간의 혼란이 생겼습니다. DispatchQueue.global().async { self.processData() // self를 강하게 캡처 } // 클로저가 실행되는 동안 self가 메모리에 유지되며, 작업 완료 후 클로저가 해제되면 self도 참조카운트가 감소되는 것으로 알고 있습니다.그렇다면 Task와 DispatchQueue의 차이점은 'self를 명시적으로 쓸 필요 없다/써야 한다' 뿐이지, 순환 참조 관련된 처리는 다르지 않지 않을까 하는 고민인데요. 뭔가 제가 잘못 이해한 부분이 있을 것 같습니다. 혹시 이 부분 설명 해주실 수 있으실까요? 더불어서 Task를 쓰면 순환 참조가 생길 가능성 자체도 없는 것인지도 궁금합니다. 감사합니다 😊
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강 기간 연장 신청 요청드립니다.
안녕하세요 앨런님!좋은 강의 잘 듣고 있습니다. 강의의 수강 기간이 곧 만료되어 수강 연장을 요청드리고자 이렇게 글을 남깁니다.업무 병행 중이라 학습 진도가 예상보다 늦어졌고, 해당 강의를 끝까지 제대로 수강하고 싶은 마음이 큽니다.혹시 가능하다면 강의 기간을 연장해주실 수 있을지 여쭤봅니다.항상 좋은 강의 감사드립니다!
-
해결됨앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
API 출력 오류.. 도와주세요.
안녕하세요 강사님 섹션22의 Step 13을 실습하고 있습니다.화면위에는 CurrentWeather를 아래쪽에는 Forecast를 출력시키려는데, 잘 안되네요.현재날씨를 출력하는건 잘 나오는데 Forcast는 출력이 안됩니다.갯수를 찍어보니 0이 나옵니다.그리고 결과를 콘솔에 찍어보니 실패가 나온느거 같은데요. 어느 부분이 잘못되었는지 찾기가 힘드네요..힌트라도 주실 수 있나해서 글을 올립니다.
-
미해결Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
75강 실시간으로 팔로우수 안늘어나는 이유?
12:34 부분처럼 팔로잉, 팔로우 버튼을 눌렀을 때 해당 숫자의 변화가 없어요ㅜ
-
해결됨SwiftUI의 Property Wrapper(@State, @Binding...)
예제 코드가 안나와요
예제 코드가 안나와요
-
미해결앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
play ground 오류?? 원인을 알고 싶습니다.
안녕하세요. 강사님질문 드린지 얼마안되었는데, 다시 질문 드립니다.섹션22의 Step #10 강의를 실습하던중에 문제가 생겨서 여러번 해결해보려 했는데, 잘 안되어서질문드립니다.말씀하신대로 날씨 API는 잘 되어서 play ground에서 API구현을 실습했습니다. 두번째와 세번째 그림에서 보시다시피Ignoring duplicate libraries라는 오류가 뜹니다.실행이 안되고요, Failed to launch process. .... 이런 에러도 있네요.. 또한 그림에는 없지만 RPC Server 오류도 납니다.정확하게 어디가 문제인지 알고 싶습니다.부탁드리겠습니다.
-
해결됨앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
런타임 오류... 부탁드립니다.
강사님 요즘에 계속 질문사항을 올리고 있는 열혈 수강생입니다.섹션21. ATS 강의를 수강하면서 실습을 하고 있는데요..Book 프로젝트를 실습하던중에 DetailView화면에서 북마크버튼을 터치하면 런타임 오류가 납니다.시뮬레이터는 Iphone 15 Pro로 했는데, 런타임 오류가 납니다.어디가 잘못됐는지 도통 잡히지가 안네요.조언 부탁드립니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용 문의
안녕하세요 강의중에 freezed3.0 변경 이후sealed class 작성과 view_model에서 사용을 제대로 사용하고 있는지 문의드립니다. *1.switch 문 키워드 사용ex case SaveNote(:final id, :final title, :final content):2.viewModel class 연결부분ex _changeColor(color); AddEditNoteEvent(sealed class)코드 sealed class AddEditNoteEvent<T> { factory AddEditNoteEvent.changeColor(int color) = ChangeColor; factory AddEditNoteEvent.saveNote(int? id, String title, String content) = SaveNote; } class ChangeColor<T> implements AddEditNoteEvent<T> { final int color; ChangeColor(this.color); } class SaveNote<T> implements AddEditNoteEvent<T> { final int? id; final String title; final String content; SaveNote(this.id, this.title, this.content); } view model(onEvent)- 코드 import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/note.dart'; import 'package:flutter_note_app/domain/repository/note_repository.dart'; import 'package:flutter_note_app/presentation/add_edit_note/add_edit_note_event.dart'; class AddEditNoteViewModle with ChangeNotifier { final NoteRepository repository; int _color = Colors.orange.value; int get color => _color; AddEditNoteViewModle(this.repository); void onEvent(AddEditNoteEvent event) { switch (event) { case ChangeColor(:final color): _changeColor(color); break; case SaveNote(:final id, :final title, :final content): _saveNote(id, title, content); break; } } Future<void> _changeColor(int color) async { _color = color; notifyListeners(); } Future<void> _saveNote(int? id, String title, String content) async { if (id == null) { await repository.inserNote( Note( title: title, content: content, color: _color, timestamp: DateTime.now().millisecondsSinceEpoch, ), ); } else { await repository.updateNote( Note( id: id, title: title, content: content, color: _color, timestamp: DateTime.now().millisecondsSinceEpoch, ), ); } } }
-
미해결Flutter 중급 1편 - 클린 아키텍처
freezed3.0에서 build시 when생성되지 않습니다.
freezed: ^3.0.6freezed_annotation: ^3.0.0 으로 진행후 notes_event.freezed.dart 파일에 when, map생성되지 않습니다. sealed도 써보고 abstract를 지우고 해도 마찬가지 인데 혹시 방법이 있을까요? 코드 내용import 'package:flutter_note_app/domain/model/note.dart';import 'package:freezed_annotation/freezed_annotation.dart';part 'notes_event.freezed.dart';@freezedsealed class NotesEvent with _$NotesEvent {const factory NotesEvent.loadNotes() = LoadNotes;const factory NotesEvent.deleteNote(Note note) = DeleteNote;const factory NotesEvent.restoreNote() = RestoreNote;} -------------------------------------------freezed 3.0.0 변경점 로그3버전부터 삭제가 되었군요. 인터넷에 when사용관련으로 옵션 등등 찾아서 했지만 모두 생성이 안되었습니다. 이제 when은 사용하지 않는게 좋을것 같습니다. import 'package:flutter_note_app/presentation/notes/notes_event.dart';void handleEvent(NotesEvent event) { switch (event) { case LoadNotes(): print("Loading notes..."); break; case DeleteNote(): print("Deleting"); break; case RestoreNote(): print("Restoring note"); break; }}dart3.0 부터 swich문이 추천이라고하네요! 선생님 Flutter Live Templeate 쪽에도 올라왔네요 템플릿 참고해주세요!https://gravel-pike-705.notion.site/Flutter-Live-Templeate-579bac3070754bdf8fa10afe4ebe8c92
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 7] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요? 💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 6] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 5] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 4] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 3] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 2] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요? 💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 1] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요? 💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결Flutter 중급 1편 - 클린 아키텍처
Try implementing the missing methods, or make the class abstract. 문제해결 공유
---- freezed 3.0 선생님 강의 필독 ---동영상 보시면 됩니다.https://youtu.be/I-OdCNneoXQ?si=5Pop20gdzUyEByV3 답변 전 글class abstract 내용 공유드립니다. 환경dependencies:cupertino_icons: ^1.0.8provider: ^6.1.4sqflite: ^2.0.0+4json_annotation: ^4.9.0freezed_annotation: ^3.0.0sqflite_common_ffi: ^2.1.0dev_dependencies:flutter_lints: ^5.0.0json_serializable: ^6.9.4freezed: ^3.0.6build_runner: ^2.4.15 freezed: ^3.0.6작성이 변경되었습니다.내용 참고 바랍니다. class Note with _$Note {=> abstract class Note with _$Note { factory Note({=> const factory Note({ 위 내용 수정 후 진행해야 오류 안남flutter pub run build_runner build --delete-conflicting-outputs 기존 버전이라 힘들군요. ㅠㅠ *freezed 공식
-
미해결Flutter 중급 1편 - 클린 아키텍처
This is likely caused by a misconfigured builder definition. 오류 해결 방법
버전을 최신으로 마춰도 에러나는 경우 해결방법 공유합니다. 일단 선생님 환경은 현재 할수 없으므로 최신버전으로 마춰주시고 최신버전 의존성도 전부 완료되었는데도 안되는 경우는 아래 부분을 해보세요. 환경 샘플 플러터 3버전dependencies:provider: ^6.1.4sqflite: ^2.0.0+4json_annotation: ^4.9.0 →json 직렬화freezed_annotation: ^3.0.0 →불변 코드 생성dev_dependencies:json_serializable: ^6.9.3 → JSON 직렬화 및 역직렬화 자동 생성freezed: ^3.0.6 → 불변 객체 생성build_runner: ^2.4.15 → 코드 생성 도구 생성 패키지 실행 첫번째 방법1.컴퓨터 off on2.flutter clean3.flutter pub run build_runner build4.flutter pub run build_runner build --delete-conflicting-outputs4단계까지 안되면...5.신규 프로젝트 생성... 2번째 방법dependencies:provider: ^6.1.4sqflite: ^2.0.0+4json_annotation: ^4.9.0 →json 직렬화freezed_annotation: ^3.0.0 →불변 코드 생성analyzer: ^6.0.0 dev_dependencies:json_serializable: ^6.9.3 → JSON 직렬화 및 역직렬화 자동 생성freezed: ^3.0.6 → 불변 객체 생성build_runner: ^2.4.15 → 코드 생성 도구 생성 패키지 실행 낮은 버전으로 진행 후에 높은버전으로 진행했을때json_serializable에서 analyzer가 삭제가 제대로 안되서 문제가 되는 경우가 있는것 같습니다. 억지로 analyzer 맞추고 진행하고 되었을대analyzer을 제거하면 잘되었습니다. flutter 환경 세팅은 어렵군요...시간 낭비 안되도록 공유해봅니다. 에러내용: C:\project\flutter_cleancode\flutter_note_app> flutter pub run build_runner buildDeprecated. Use dart run instead.[INFO] Generating build script completed, took 326ms[WARNING] /C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/json_serializable-6.9.4/lib/src/field_helpers.dart:84:52: Error: The argument type 'ClassElement' can't be assigned to the parameter type 'InterfaceElementImpl'. - 'ClassElement' is from 'package:analyzer/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/dart/element/element.dart'). - 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/src/dart/element/element.dart'). for (final v in manager.getInheritedConcreteMap2(element).values) { ^/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/json_serializable-6.9.4/lib/src/field_helpers.dart:90:43: Error: The getter 'isGetter' isn't defined for the class 'ExecutableElementOrMember'. - 'ExecutableElementOrMember' is from 'package:analyzer/src/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/src/dart/element/element.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'isGetter'. if (v is PropertyAccessorElement && v.isGetter) { ^^^^^^^^/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/json_serializable-6.9.4/lib/src/field_helpers.dart:91:16: Error: The getter 'variable2' isn't defined for the class 'ExecutableElementOrMember'. - 'ExecutableElementOrMember' is from 'package:analyzer/src/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/src/dart/element/element.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'variable2'. assert(v.variable2 is FieldElement); ^^^^^^^^^/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/json_serializable-6.9.4/lib/src/field_helpers.dart:92:26: Error: The getter 'variable2' isn't defined for the class 'ExecutableElementOrMember'. - 'ExecutableElementOrMember' is from 'package:analyzer/src/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/src/dart/element/element.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'variable2'. final variable = v.variable2 as FieldElement; ^^^^^^^^^/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/json_serializable-6.9.4/lib/src/decode_helper.dart:65:23: Error: The getter 'augmented' isn't defined for the class 'ClassElement'. - 'ClassElement' is from 'package:analyzer/dart/element/element.dart' ('/C:/Users/karyo/AppData/Local/Pub/Cache/hosted/pub.dev/analyzer-7.4.0/lib/dart/element/element.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'augmented'. element.augmented ^^^^^^^^^[INFO] Precompiling build script... completed, took 880ms[SEVERE] Failed to precompile build script .dart_tool/build/entrypoint/build.dart.This is likely caused by a misconfigured builder definition.
-
해결됨앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
런타임 오류 - 조언 부탁드립니다.
안녕하세요. 강사님또다시 어려움이 생겨서 질문 드립니다.섹션19 의 Step #11 - CoreData를 수강하면서 질문 올립니다.시뮬레이터 iPhone 15 Pro로 진행했고요.컴파일 오류는 없는데 런타임 오류가 나서요.바쁘시겠지만 한번 봐 주시면 감사하겠습니다.
-
미해결앨런 Swift Concurrency for Swift 6 (Part-1)
Task 클로저에서 weak self 미사용에 대해 질문드립니다!
양질의 강의 만들어주셔서 업무에 많이 도움이 될 것 같아 먼저 감사의 말씀 드립니다:)'Task(작업)과 self 사용 관련 및 캡처리스트의 weak self 사용 (5강)'에서 질문 드립니다. Task 클로저 내에서 weak self를 생략하더라도 메모리 누수 관점에서 문제가 없는 것은 이해가 되었습니다!다만, GCD를 Task로 전환하는 관점에서 생각해봤는데요 'self가 해제된 시점'에서 'weak self 사용'한 'GCD 클로저'에서는 내부 동작이 실행되지 않을 것 같은데요'self가 해제된 시점'에서 'weak self 미사용'한 'Task 클로저'에서는 내부 동작의 실행이 보장될 것 같은데 제가 이해한게 맞을지 궁금합니다!길지 않은 비동기 작업이더라도 미세하게 동작 차이가 발생할 수 있는 부분이 아닐까 싶어 질문 드렸습니다!