IOS/Swift

[TIL] Swift. Frame and Bounds
1pt는 1포인트 1인치를 72로 나눈값이 1pt = 0.3527입니다 1px는 1픽셀로 이미지를 이루는 가장 작은 단위의 점입니다. Window & Mac 디스플레이 Windows에서 9pt = 12px Mac 에서 9pt = 9px windows는 화면 해상도를 95dpi를 쓰지만, mac에서는 72dpi를 사용합니다. 즉, 1인치당 96개의 점이 있는 윈도우와, 1인치당 72개의 점이있는 맥의 차이입니다. Retina 디스플레이 레티나가 아닌 디스플레이에서는 1pt = 1px이 되는데, 레티나에서는 iPhoneX, 플러스+ 종류의 Device는 3x렌더링을 하게 되는데 1pt = 9px이라고 생각하고 iPhoneX, 플러스+를 제외한 Device는 2x로 렌더링을 하게되서 1pt = 4px라고 됩니..

[TIL] Swift. awakeFromNib
이번내용은 코딩을 하던 와중에 뷰 컨트롤러의 라이프 사이클에서는 볼수 없었지만 코드를 작성할때 셀의 UI를 변경하는 코드 등을 awakeFromNib에 작성하길래 무엇인지 궁금해서 공부하면서 정리해 보았습니다. awakeFromNib() 은 객체가 초기화(인스턴스화)된 후 호출된다. UIView에서 상속받은 커스텀 View클래스를 만들고 인터페이스 빌더에 지정하면(오른쪽 탭 inspector에서 지정하는 방법으로) 커스텀 클래스는 아카이브되어 있다가 언아카이브되게 된다.(xib파일에) 이때 init(coder:)가 호출되고 내부 속성이 초기화된다 일부는 이 때 의미없는 값으로 초기화되거나 IBOutler을 비롯한 객체 참조 관계가 불명확할 수 있다. init 시점에서는 frame과 관련된 크기, 위치 등..

[TIL] Swift. ViewController LifeCycle
1. Two types of view Controllers Content View Controllers 모든 뷰를 단독으로 관리 UIViewController, UITableViewController, UICollectionViewController등 Container View Controllers 자체뷰 + 하나 이상의 자식 뷰 컨트롤러가 가진 루트뷰 관리 컨터에너는 컨텐츠를 관리하는 것이 아니라 루트뷰만 관리하며 컨테이너 디자인에 따라 크기 조정 UINavigationController, UITabbarController, UIPageViewController 등 실질적으로 첫번째(1) 메인에서 두번째(2) 화면이 전환될때 일어나는 순서는 ViewWillDisappear(1) → veiwDidLoad..

[TIL] Swift. ARC ( Automatic Reference Counting )
1. What is ARC? Automatic Reference Counting 이름에서 알 수 있듯이 reference의 숫자를 자동으로 세는 메모리 관리자입니다. 이 말은 객체의 메모리 할당시 인스턴스에 reference를 저장하는 객체만 ARC의 영향을 받는다는 말입니다. 따라서 Value Type은 관리 대상이 아닙니다. 대상: Class, Closure 등 Swift는 각각의 객체에 retain counts를 가지고 있고 이 안에 Strong reference count가 0이된 것을 ARC가 메모리에서 해제합니다 2. Resource Management ViewController가 생성한 모든 뷰와 객체들은 ViewContoller의 책임 UIViewController의 LifeCycle에 따..

[TIL] Swift. dequeueReusableCell
dequeueReusableCell 역할 지정된 재사용 식별자에 대한 재사용 가능한 테이블 뷰 셀 객체를 반환하고, 이를 테이블에 추가합니다. 여기서의 지정된 재사용 식별자란 withIdentifier 다음에 올 문자열을 의미하고. identifier라는 이름의 문자열은 우리가 테이블뷰 셀이나 콜렉션뷰 셀을 만들때 reusable cell 의 이름을 지정해 주는 이름과 같습니다. 따라서 재사용이 가능해야 하므로 절대. nil이 올수 없다. for 다음에 오는 indexPath란 것은 이전에 테이블뷰나 컬렉션 뷰를 사용하면서 쓰게되는 메서드에서 지정했던 값이다. tableView라는 메서드는 우리가 UIKit을 이용해서 만든 뷰의 클래스를 이름으로 받고 해당 뷰의 위치를 파라미터로 받습니다. 따라서 for..

[TIL] Swift. Class 2편
1. 언제 클래스와 구조체를 사용하는지. Struct 를 사용해야 할때 두 Object를 "같다, 다르다" 로 비교해야 하는 경우 let point1 = Point(x:3, y:5) let point2 = Point(x:3, y:5) //데이터 자체를 비교하는 경우 Struct를 쓰는게 좋다 Copy된 각 책체들이 독립적인 상태를 가져야 하는경우 var myMac = Mac(owner: "Jason") var yourMac = myMac yourMac.owner = "Jay" myMac.owner // "Jason" yourMac.owner // "Jay" 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우 2.Class를 사용해야 할때 두 Object의 인스턴스 자체가 같음을 확인해야 할때 하나..