일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- combine
- 클린 코드
- RxCocoa
- 스위프트
- map
- SWIFT
- swift documentation
- Protocol
- UITextView
- tableView
- swiftUI
- Refactoring
- Observable
- uiscrollview
- 리펙터링
- UICollectionView
- Human interface guide
- 리펙토링
- ribs
- collectionview
- rxswift
- Xcode
- MVVM
- HIG
- 애니메이션
- ios
- 리팩토링
- clean architecture
- uitableview
- Clean Code
- Today
- Total
목록ios (1094)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/m8laD/btsFfcslZgp/A0k0eV8rrXb6hHvoSw7g41/img.gif)
UINavigationController 접근 주의사항 UIViewController에서 navigationController 접근 시 viewDidLoad 시점에서는 nil임을 주의 ex) VC를 navgationViewController로 push하여 viewDidLoad시점과 viewWillAppear시점에 naviagtionController 출력 class SecondVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("(viewDidLoad) naviVC:", navigationController) } override func viewWillAppear(_ animated: Bool) { super.vie..
Atomic 이란? 다중 스레드 프로그래밍에서 사용되는 개념 연산이 더 이상 분할되거나 중단될 수 없음을 의미 thread safe 지키는 방법 중 하나 (구체적인 개념은 이전 포스팅 글 참고) ex) 두 명의 사용자가 프린터 출력 명령 -> 각 인쇄는 중단되지 않고 한번에 실행 만약 atomic이 아닌 경우, 두 사용자의 자료를 부분적으로 인쇄되는 문제 Atomic 프로퍼티 생성 방법 NSLock을 사용 (자세한 개념은 이전 포스팅 글 참고) lock() 메소드를 사용하면 그 하위 코드들은 스레드가 하나만 접근할 수 있는 영역 주의) 가끔 아래처럼 NSLock을 상속받게끔 구현할 수 있지만, MyInt를 사용하는 쪽에서는 알아서 불필요한 NSLock의 프로퍼티들까지 인터페이스가 열리기 때문에 비추천 f..
AssociatedObject 생명주기 AssociatedObject를 사용하면 extension에도 stored property 처럼 표현이 가능한데, ARC에 의하여 참조 카운트가 0이되면 자동으로 AssociatedObject도 사라지는것인가? AssociatedObject를 사용하여 extension에 stored property 추가 방법은 이전 포스팅 글 참고 ex) AssociatedObject extension UIScrollView { var lastOffsetY: CGFloat { get { (objc_getAssociatedObject(self, &AssociatedKeys.lastOffsetY) as? CGFloat) ?? 0.0 } set { objc_setAssociatedObj..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/D0lUu/btsEZTtregI/o0R2v7vkJkuAVKOL61IeN1/img.png)
1. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - Share Extension 생성까지 2. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - UI 구현 3. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - 데이터 교환 지난 포스팅 글까지 한 것) Share Extension 생성 앱에 Target으로 Share Extension을 추가하여 아래처럼 ExInstagramShareExtension 모듈이 추가된 상태 UI 구현 자동으로 생성된 ShareViewController..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XRXbB/btsEWNOMQcb/1whSYVaMat6VG7UBfSrAg1/img.png)
1. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - Share Extension 생성까지 2. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - UI 구현, 데이터 교환 3. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - 데이터 교환 UIActivityViewController의 share sheet 인터페이스 제공 UIActivityViewController를 띄우면 보이는 화면을 share sheet라고 명칭 사진을 다른앱으로 공유하기 위해서 여기서 인스타그램을 누르면 하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c6wcrk/btsEXnWCLdA/k0wcjkc4P1WKryKjjef9iK/img.png)
UIImage에서 Data로 변환에서의 주의사항 UIImage를 서버로 올리거나 데이터 교환을 할 때 Data형태로 변환해야할때가 있는데 이 때 alpha값(투명도)이 제거되는 jpegData로 쓸 것인지, pngData로 쓸 것인지 판단이 필요 (반대로 Data에서 UIImage로 변환할때는 Data의 bit를 확인하여 jpg인지 png인지 판단이 가능) 방안: UIImage를 Data로 변경할 때 alpha정보를 파악하여 jpegData를 사용할지 pngData를 사용할지 선택하여 사용 UIImage에서 alpha 정보 아는 방법 - alphaInfo alphaInfo란 CGImage의 프로퍼티인데 이 정보를 사용하면 alpha값이 있는지 유무 판단이 가능 alphaInfo는 enum으로 구현된 것..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsfcw8/btsESKSdLm6/ErXDhk6NSRFo3Ca134nYO0/img.png)
shouldRasterize 개념 CALayer의 bool 프로퍼티 open class CALayer : NSObject, NSSecureCoding, CAMediaTiming { open var shouldRasterize: Bool } compositing전에 bitmap으로 만들고 이 bitmap을 활용하여 화면에 그림을 그릴지 여부 (default값은 false) *compositiong: 여러 개의 그래픽 요소를 하나의 이미지로 결합하는 프로세스를 의미 shouldRasterize를 true로 하게되면 CALayer들을 픽셀로 판단하여 bitmap으로 변환하여 그림을 그림 CALayer를 통해 매우 복잡한 그림을 그려야할때 true로 사용하는것이 유리 (CALayer에 의해서 다양한 그림을 그릴..
프로퍼티를 assign한다는 의미 assign한다는 것은 아래처럼 특정 값을 변수에 대입한다는 의미 // a에 1을 assign하는 형태 let a = 1 assign되는 2가지 형태 primary type, struct와 같은 value type을 assign하는 경우 value type을 assign하게되면 a프로퍼티는 value type가 됨 // a에 1을 assign하는 형태 let a = 1 class와 같은 reference type을 assign하는 경우 reference type을 assign하게되면 해당 프로퍼티는 reference type이 됨 class C {} let c = C() reference type 주의사항 reference type이라는 의미를 주의할 것 아래와 같이 c..