일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ios
- oberve url
- development language
- swift #swift keychain #keychain 사용법
- url 추적
- swift
- 기존 앱
- GeometryReader
- base64 변환
- Android
- SwiftUI
- DataBinding
- UIPresentationController
- Tuist
- convert base64
- 상단 탭바
- notifychanged
- Swift Package Manager
- UIViewControllerTransitioningDelegate
- DevelopmentRegion
- scrolling tab
- Side Menu
- detect url
- 스크롤 탭
- List
- 개발자 면접
- url 관찰
- transformation.map
- pod install
- ViewBuilder
- Today
- Total
목록Swift (22)
버그 잡이
[weak self] 를 사용할 때, self를 처리하는 방법에는 두 가지가 있습니다. 'guard let self = self' 와 'self?.' "무엇을 쓰는 것이 좋을까요?" 결론부터 말씀드리면 상황에 따라 다릅니다. "guard let self = self" 먼저, 클로저 시작 부분에 'guard let self = self'를 쓰는 것은 "deallocation delay"를 발생시킬 수 있습니다. deallocation delay 는 클로저가 참조하고 있는 객체의 메모리 해제를 지연시키는 현상을 말합니다. 클로저 안에서 이미지를 로드 하는 등의 시간이 오래 걸리는 작업이 있다면 클로저 안의 로직을 수행하는 도중에 self 인스턴스가 해제될 수 있는 것 입니다. 그런데 guard let으로 s..
www.avanderlee.com/swift/property-wrappers/ Getting started with Property Wrappers in Swift - SwiftLee Get started with Property Wrappers in Swift. Use the @propertyWrapper to remove boilerplate, improve readability, and clean up code. www.avanderlee.com 위 글을 보고 정리한 내용임을 밝힙니다. Property Wrapper란 무언인가? property wrapper는 property가 저장되고 계산되는 것을 정의하는 하나의 층으로 볼 수 있습니다. 이는 getter와 setter에 사용되는 반복적인 코드를..
scrollView를 구현하는 방법은 두가지가 있습니다. contentLayoutGuide를 사용하는 방법 contentLayoutGuide를 사용하지 않는 방법 "contentLayoutGuide" 란? Content and Frame Layout guides are supported for UIScrollView and can be enabled in the Size inspector for more control over your scrollable content. (29711618) - xcode 11 release note 위 정의에 나와 있듯이 "scrollView의 제약 조건 설정을 도와주는 interface: 입니다. Xcode11 부터 지원이 됩니다. 애플에서 권장하는 사용법이기 때문에 ..
https://www.hackingwithswift.com/articles/113/nsattributedstring-by-example 위 글을 참고하여 작성한 글임을 밝힙니다. string은 간단한 text를 표현하기에는 좋은 도구이지만 text 일부분에만 색상을 입히고, 밑줄을 치는 등의 효과를 주기 위해서는 AttributedString을 알아야 합니다. Attributed String 만들기 let quote = "Haters gonna hate" let attributedQuote = NSAttributedString(string: quote) 위 코드가 출력된 결과는 string과 차이가 없습니다. 특성을 하나씩 줘보겠습니다. font 바꾸기 let quote = "Haters gonna ha..
웹뷰와의 통신을 위해서 json 형식의 string을 파라미터로 넘겨야 하는 경우가 생겼습니다. 어떻게 해야할까요? * 단순 json인 경우 let jwt = sd23es let user = "sangjin" let data: [String: String] = [ "jwt" : "\(jwt)", "user": "\(user)" ] guard let json = try? JSONEncoder().encode(data), let jsonString = String(data: datajson, encoding: .utf8) else { return } * 객체를 포함하고 있는 경우 let jwt = 23e32we3 let user: UserModel = User() guard let userJson = try..
팝업에는 보통 "오늘 하루 보지 않기" 버튼이 함께 있습니다. 하루에 대한 계산 기준은 기획에 따라 달라질 수 있는데요. 1. 지금부터 24시간 이후 다시 띄우기2. 내일 0시부터 다시 띄우기 위와 같은 시간은 어떻게 계산할 수 있을까요? 1. 지금부터 24시간 이후 팝업 다시 띄우기 Calendar 구조체를 활용하면 간단하게 지금 날짜에 하루를 더할 수 있습니다.현재 시간에 하루를 더하면 됩니다.let today = Date()let nextDate = Calendar.current.date(byAdding: .day, value: 1, to: today)print(today) // 2020-09-28 12:44:35 +0000print(nextDate) //Optional(2020-09-..
Xcode는 안드로이드 스튜디오에 비해 디버깅 메시지가 불친절합니다. 그래서 custom 로그를 찍을 수 있는 함수를 만들어서 쓰는 경우가 많은데요. 이는 swift의 디버깅 식별자 라는 것을 활용해 만들 수 있습니다. 디버깅 식별자 #file : 현재 코드가 실행 중인 파일 이름을 나타냅니다. #line : 현재 코드가 실행되고 있는 파일의 몇 번 줄에 위치하는지 나타냅니다. #column : 현재 코드가 실행되고 있는 줄의 몇 번 칸에 위치하는지 나타냅니다. #function : 현재 코드가 실행되고 있는 함수의 이름을 나타냅니다. myLogPrint 만들기 #file, #line #function을 사용하여 현재 찍은 로그가 어떤 파일, 몇번째 줄, 어떤 function인지 나타내주는 함수를 만들어..
프로토콜 지향 프로그래밍 애플은 Swift를 "프로토콜 지향 언어" 라고 말합니다. 프로토콜 지향이란 도대체 무슨 뜻일까요? 객체지향 프로그래밍 패러다임의 언어들은 대부분 클래스를 상속을 사용해 타입에 공통된 기능을 구현합니다. 상속을 활용하면 코드의 재활용을 할 수 있어 중복 코드를 줄이는 장점이 있지요. 그런데 Swift는 class 뿐만 아니라 struct, enum과 같은 값타입도 class 만큼 자주 사용합니다(권장하고 있죠.) 이러한 값타입은 상속을 받을 수 없죠. 맞습니다. struct, enum과 같은 값타입에 프로토콜을 사용하면 상속을 사용하는 것과 같은 효과를 누릴 수 있습니다. "근데 기존의 참조타입을 써도 되는데 값타입을 쓰는 이유는 무엇일까요?" Class와 같은 참조 타입의 경우..