본문 바로가기

전체 글

(61)
WKWebView MemoryLeak 해결 프로젝트가 웹뷰를 베이스로 진행하고있어 웹뷰를 구현을 한 후 메모리 디버깅을 해보니 웹뷰컨트롤러가 사라지지않고 계속 메모리에 남아있는 이슈를 발견하였다. 해당 문제를 Coordinator 패턴을 잘못 사용하였거나 ViewModel을 잘못 사용하여 Strong 하게 메모리가 연결되어 있어 메모리가 삭제되지 않았나 라는 의심이되어 메모리를 디버깅을 해보니 해당 Coordinator , ViewModel 의 문제는 전혀 아니였고 ViewController와 Strong하게 의존되어있는 프로젝트도 발견할 수 없어 무엇이 문제인가 한참 찾아보았는데 결론이 정말 허무했다. WkWebView에서 자바스크립트의 함수를 받기위한 WKScriptMessageHandler의 함수가 자체적으로 Strong하게 연결되어있어 M..
타입캐스팅 is , as 와 Any , AnyObject is , as를 알기위해 우선 MediaItem 클래스를 생성합니다. class MediaItem { var name: String init(name: String) { self.name = name } } 그 후 MediaItem 을 서브클래스로 가지는 Movie 와 Song 클래스를 만듭니다. class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song: MediaItem { var artist: String init(name: String, artist: String) { self.artist = ..
Swift 함수형 프로그래밍 공부를 하면서 객체지향 , 함수형 등 프로그래밍을 들어봤지만 당연히 객체지향 프로그래밍을 사용하고 있고 함수형 프로그래밍을 해본적이 없다고 생각을 하고있었다 하지만 공부를 위해 그리고 다양한 견문을 넓히기 위해 함수형 프로그래밍을 검색해서 공부를 해보았는데 어디서 본적있는 코드들이 나오는게 아닌가 예를 들어 배열에서 사용하는 필터등 ... 나는 함수형 프로그래밍을 사용하면서 모르고 있었던거였다 상당히 창피했다. 그래서 본격적으로 함수형 프로그래밍에 대해 찾아보고 정리를 하기로 결심을 하고 이 글을 작성한다 함수형 프로그래밍이란? 1. 함수의 응용을 중요하게 생각한다. 2. 함수를 일급 객체로 다룬다 3. 코드의 실행과 결과값이 함수에 전달된 인자값으로만 결과를 만들어 내기때문에 상태값을 가지고있지않고 순..
Moya / RxMoya 사용해보기 Swift에서 Alamofire을 사용하다보면 직접 Router 만들거나 NetwokrManager 같은 클래스를 만들어서 사용합니다 그럴경우 네트워크 계층이 일반적으로 Moya를 사용하지 않을경우 통신계층 구조가 심플하지 못한 구조를 가질수 있습니다. 그런 부분들을 해소 해주는 것이 Moya라이브러리 입니다. Moya의 주요 목표는 Moya는 일반적으로 enum을 사용하여 네트워크 요청을 타입 안전한 방식으로 캡슐화하는데 초점을 맞춤 네트워킹 라이브러리로 네트워크 계층에서 작업할때 추가된 검색 가능성과 함께 컴파일 시간 보장등을 제공 합니다. Provider: Moya의 MoyaProvider는 모든 네트워크 서비스와 상호작용할때 만들고 사용할 주요한 객체입니다. 초기화할때 Moya Target을 가지..
swift 인-아웃 파라미터 (In-Out Parameters) swift 인 - 아웃 파라미터에 대해 알아보겠습니다. 예시 함수입니다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 일반적인 swift함수와 inout의 차이점은 함수에서 인자로 받은 값이 함수 내에서 변경을 해도 해당 함수를 사용한 공간에서도 인자값의 값이 변화한다는 것입니다. 말로 하면 좀 이해가 어려우실거같아서 해당 함수를 예시로 보여드리겠습니다. var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(..
앱스토어 등록시 전화 번호 : 유효하지 않은 필드입니다. 전화 번호 : 유효하지 않은 필드입니다. 로 제가 이번 프로젝트 앱스토어에 심사를 받는데 엄청난 고통을 받았는데요 ㅜㅜ 1주일이상 지연됬네요 화나게... 해당오류는 정말 어이가 없었습니다. 국가번호 미입력... +82 를 입력하지 않아서 생긴문제였습니다 혹시 저말고도 다른분들도 해당 오류로인해 고생하고있다면 국가번호를 입력해주시면 정상적으로 등록이 됩니다. 어휴 ㅜㅜ 상담사분들도 몰랐던 정보라고하니... 이 글 보고 많분들이 오류 해결하셨으면 그리고 댓글도 꾸벅
Geometryreader란? Geometryreader 사용하기 SwiftUI로 처음 UI 를 그리게 된다면 HStack , VStack 을 기본적으로 사용하게되고 ScrollView 와 같은 기능이 포함된 view를 사용하기 시작할텐데요 그중 가장 좀 이질적인? View가 하나가 있습니다 그건 Geometryreader 인데 SwiftUI를 공부하시거나 미니 프로젝트? 를 진행하고 계신분들이 Geometryreader에서 상당히 좀 곤란을 겪는거 같더라구요 그래서 Geometryreader에 대해 제가 간단하게만 설명을 드릴려고합니다. struct geometry: View { var body: some View { GeometryReader{ g in } } } 우선 이게 Geometryreader의 뼈대가되는 가장 간단한 모습인데 g 라고 선언한 변수는 geom..
SwiftUI 검색창 만들기 가벼운 필터 기능 추가 안녕하세요 SwiftUI 로 검색창 만들고 가벼운 필터까지 넣을수 있는 기능 바로 시작합니다. SearchBar with Filter 긴 말 싫어합니다 바로 만들러가죠 struct searchBar: View { //Binding은 외부에서 값을 바인딩시킬수있다. //택스트필드에 들어갈 값을 저장하기위한 변수 @Binding var text : String @State var editText : Bool = false var body: some View { HStack{ //검색창을 받을수있는 택스트필드 TextField("검색어를 넣어주세요" , text : self.$text) //hint와 태두리에 간격을 띄우기위해 15정도의 간격을주고 .padding(15) //양옆은 추가로 15를 더줌 .pad..