일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- uiscrollview
- swiftUI
- 리팩토링
- tableView
- Human interface guide
- collectionview
- RxCocoa
- rxswift
- ribs
- SWIFT
- combine
- 리펙토링
- UICollectionView
- ios
- 클린 코드
- swift documentation
- Protocol
- map
- Refactoring
- clean architecture
- HIG
- 애니메이션
- uitableview
- 스위프트
- UITextView
- Observable
- 리펙터링
- Xcode
- Clean Code
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dXYqiA/btstw2imz6Y/lbJXSopap7TXqPfSTM8cj0/img.png)
NSAttributedString와 AttributedString 비교 NSAttributedString은 iOS 3.2부터 사용이 가능하며 String에 색상, 하이퍼링크, accessibility 관련 속성을 같이 가지고 있는 데이터 타입 AttributedString은 iOS 15부터 사용이 가능하며 NSAttributedString을 보완한 형태 SwiftUI에서 Text(attributedString)과 같이 바로 사용이 가능 비교하며 AttributedString 알아보기 프로퍼티 입력 NSAttributedString은 attributes를 dictionary 형태로 Key-value로 입력하는 형태 AttributedString은 AttributedString 타입 자체의 프로퍼티에 입력이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OB2gK/btstx4fE7fY/QKzPC0HY5uxdTdemw0DneK/img.png)
toDouble 매크로 소개 String타입의 숫자를 Double 형태로 바꾸는 매크로이며, 컴파일 타임에 숫자가 아닌 문자열을 미리 컴파일 에러를 발생하게하는것이 목표 toDouble 매크로 구현 Swift macro 프로젝트 생성 ToDouble 매크로 선언 // ToDouble.swift import Foundation import SwiftCompilerPlugin import SwiftSyntax import SwiftSyntaxBuilder import SwiftSyntaxMacros public struct ToDouble: ExpressionMacro { public static func expansion( of node: some FreestandingMacroExpansionSyntax..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d63wEa/btstzvcJkuq/xDXrg7TkPzOwadbe3s2GVK/img.png)
숫자로 이루어진 문자열 판별 목표 - isNumber이라는 String의 extension으로 computed property를 정의하는 것 "123".isNumber // true "123.456".isNumber // false CharacterSet을 이용한 방법 extension String { var isNumberByCharacterSet: Bool { let digitsCharacters = CharacterSet(charactersIn: "0123456789") return CharacterSet(charactersIn: self).isSubset(of: digitsCharacters) } } regularExpression을 이용한 방법 extension String { var isNum..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bH8Lam/btstG46HKRI/ibwQQ2tErvZhMR09BGupuk/img.png)
(URLMacro 코드는 DougGregor Git repo를 참고하였습니다) URLMacro 소개 보통 URL(string:)을 사용하여 URL을 만들면 run time시점에 해당 string이 URL 형태인지 확인하여 Optional을 반환하지만 swift macro를 사용하면 compile time에 해당 string이 유효한 URL의 형태인지 파악이 가능 URLMacro의 목적 잘못된 URL 형태의 문자열로 URL을 초기화할 때 컴파일 타임에 알 수 있도록 제공 URLMacro 구현 swift macro 프로젝트 생성 방법은 이전 포스팅 글 참고 attached 매크로와 freestanding 매크로 중에 URLMacro는 독립적으로 연산자처럼 사용되는 freestanding 매크로이며 expre..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dqvUVd/btstwfIRhIV/1IZsr15c4OOLEHbSFoQsLk/img.png)
일반적인 방법 - deinit에서 출력 deinit은 class타입에서 해당 인스턴스가 메모리 해제 될 때 호출되므로 이 부분을 출력되는것을 확인하여 쉽게 memory leak이 나고 있지 않다는 확인이 용이 // BaseViewController.swift deinit { print("DEINIT: \(self)") } 위처럼 구현하면 콘솔창을 일일이 확인해야하므로, 조금 더 편한 방법은 UIViewController가 메모리 해제될 때 소리로 알려주는 방법 메모리 해제될 때 소리로 알려주는 방법 특정 break point가 실행될 때 Xcode에서 소리가 나게끔하는 방법이 존재 특정 UIViewController를 닫을 때, 메모리 해제되는 타이밍에 소리가 나게끔 설정해놓고 만약 소리가 나지 않는다면..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YKKVS/btstwG7C1Ue/Snv5EK8f8g4MVah8aXkL80/img.png)
UIStackView의 padding 보통 UIStackView를 사용하면 UIStackView안의 아이템들 spacing은 setCustomSpacing(_:after:) 메소드를 사용하여 구현이 가능 stackView.setCustomSpacing(16, after: label1) 만약 UIStackView에 추가한 아이템들과 UIStackView간의 padding을 아래처럼 주고 싶은 경우? UIStackView에 padding 적용방법 UIStackView의 isLayoutMarginsRelativeArrangement를 true로 설정 이 프로퍼티는 margin을 사용하겠다는 플래그값을 의미 (default가 false이며 false이면 margin적용 x) 해당 옵션은 UIStackView에만..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDWWug/btstzwiaiJm/REKgUJk1jqNVSOjZepn8YK/img.gif)
맞춤법이 틀린 곳으로 포커스 이동 단축키 cmd + ; 오타로 의심되는 부분의 단어로 포커스 이동 cmd + ;를 한번 더 누르면 그 다음 오타 자리로 이동 오타수정 단축키 control + 오른쪽 마우스 클릭 맨 위에 추천해준 단어 클릭하면 반영 완료 여러개의 단어를 추천받고 싶을 때는 control + : * 참고 https://sarunw.com/posts/spell-checking-in-xcode/
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGU2ld/btsts6rA9Cj/g6941Ekn1t8jauPdYkqxKK/img.png)
systemLayoutSizeFitting 개념 오토 레이아웃 안에서, 현재 systemLayoutSizeFitting을 호출하는 뷰의 내부 크기를 계산한 결과를 반환해주는 함수 AutoLayout은 보통 동적으로 크기가 정해지고 나서 layoutSubivews()와 같은 델리게이트 메소드에서 frame.size를 알 수 있지만 systemLayoutSizeFitting을 사용하면 autoLayout 기반으로 잡힌 구조에서 크기를 바로 구할 수 있음 파라미터에는 보통 2가지의 상수값을 사용 UIView.layoutFittingCompressedSize UIView.layoutFittingExpandedSize 크기 옵션 layoutFittingCompressedSize 레이아웃 시스템에게 뷰의 내용을 가..