iOS(6)
-
ㅜㄷㅌㅅ
https://ios-development.tistory.com/829
2023.01.22 -
https://velog.io/@eddy_song/stack-view
https://velog.io/@eddy_song/stack-view
2023.01.07 -
Then
⚠️ 티스토리 관리자의 플러그인에서 Syntax Highlight를 적용하기 전 문서입니다. Then은 Kotlin의 범위지정함수(= apply, with, let, also, run) 역할을 하며, 특히 initializer를 더 예쁘게 사용 할 수 있도록 도와줍니다. then, with, do가 있으며 예시는 아래와 같습니다. //then //NSObject subclasse라면 아래와 같이 사용 가능합니다. let queue = OperationQueue().then { $0.maxConcurrentOperationCount = 1 } //CustomClass라면, 아래와 같이 extension하여 사용합니다. extension MyType: Then {} let instance = MyType()..
2023.01.06 -
required init?(coder: NSCoder), init 마지막
[https://jeonyeohun.tistory.com/359]를 재해석한 포스팅입니다. 1. 여기서 NSCoder란 뭘까요? Objective-C 및 Swift의 객체 및 기타 값을 인코딩 및 디코딩하는 Foundation 프레임워크의 클래스 데이터를 영구 형식으로 저장하고 나중에 다시 만드는 데 사용 데이터를 파일에 저장하거나 네트워크 연결을 통해 데이터를 전송하는 데 사용(encoding ↔️ decoding) 개체 및 개체가 참조하는 모든 개체에 대한 데이터를 포함하는 파일을 만드는 프로세스인 개체 보관 프로세스에서도 사용 2. 즉 요약하자면 ✅ NSCoder는 인터페이스이며, 이를 구현하는 서브클래스는 어떤 객체를 메모리와 다른 데이터 포맷 사이에서 전환이 가능! 아카이빙과 디스트리뷰션을 통해..
2023.01.03 -
UIView.init()를 알아보자.
3. 사실, 여기서 init()은 NSObject의 init 이다. 아래와 같이, 상속관계를 가진다. 5. 그러나, init(frame:) 와 init(coder:) 두 개가 UIView의 Designated initializer ( = 필수 initializer) 이므로, UIView 를 생성하려면 이 둘 중 하나를 반드시 호출해야한다. ➡️ UIView() 로 뷰를 생성하면, 내부적으로 init(frame:CGRect) 을 호출해야만 하겠죠. 6. init(frame:)을 직접 호출하는 것과, init()을 호출하는 데에 콜스택엔 아래와 같은 차이가 있다. 즉, AppKit / UIKit 쪽 코드인 [UIView init] 에서 NSObject의 init 을 override 한 후 init(frame..
2023.01.02 -
1월 1일, convenience init은 왜 무한루프일까?
import UIKit class ViewController: UIViewController { let subView = SubView() //초기화 override func viewDidLoad() { super.viewDidLoad() } } class SubView: UIView { convenience init(){ print("start1") //start1이 무한호출된다. self.init() print("end1") } override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } Conveni..
2023.01.01