Required 4

Frame과 Bounds의 차이

frame과 bound는 먼저 UIView 클래스의 프로퍼티이다. frame과 bounds의 타입이 CGRect로 되어 있는 것을 볼 수 있는데, 이것은 frame과 bounds가 사각형을 나타냄을 의미한다. 사각형으로 그려진다는 것은 또한 위치와, 크기. 즉 x, y좌표와 width(너비), height(높이)를 가짐을 의미한다. 먼저 Frame에 대한 애플의 공식문서를 살펴보자. 문서에 따르면, frame이란 SuperView의 좌표시스템에서의 위치(location)과 크기(size)를 나타낸다는 것을 의미한다. 여기서 중요한것은 frame이 SuperView(상위 뷰)의 좌표시스템을 따른다는 것이다. 최상위 뷰는 슈퍼뷰를 의미하는 것이 아니라. 자신이 속해 있는 한단계의 상위 뷰를 의미한다. Bou..

Required 2022.02.10

iOS: Application LifeCycle

애플리케이션의 생명주기는 App Launch -> App Visible -> App Recedes into Background -> Resources Reclaimed로 구성된다. 마지막 과정인 Resources Reclaimed 가 어떻게 iOS가 동작하는지에 대한 핵심이다. 자원(Resource)란 CPU time 과 memory 같은 한정된 자원을 말하며, OS는 이런 자원들을 어떻게 할당할지 결정해야 한다. 그렇다면 iOS에서는 무엇으로 우선순위를 결정할까? 가장 높은 우선순위를 가지는 것은 지금 유저에게 보여지고 있는 foreground에서 실행되고 있는 앱이다. 이러한 것을 앱 개발자가 App Lifecycle을 고려해야할까? 내가 만든 앱을 사용하는 유저가 있고, 게임 앱에서 방금 보스를 깨..

Required 2022.01.19

iOS: ViewController LifeCycle

ViewController도 사람의 수명처럼 라이프사이클이 존재한다. viewDidLoad(): 처음으로 실행되는 것은 뷰가 로드되는 것이다. 여기서는 모든 IBOutlets, IBActions 등 뷰와 관련된 오브젝트들이 연결되며, 이때부터는 오브젝트들에 접근할 수 있다. viewDidLoad() 메서드는 뷰가 생성될 때 한 번만 호출된다. 여러 번 호출되는 다른 메서드와는 다르다. viewWillAppear(): 한번 view가 로드되고 나면, 운영체제에서 다음으로 후출하는 메서드이다. 뷰가 실제로 스크린에 보이기 직전에 호출된다. 따라서 이 메서드가 호출될 때 유저는 아직 스크린을 통해 아무것도 볼 수 없지만, 그렇기에 UI 요소들을 없애는데 쓰인다.(ex. navigation bar) viewDi..

Required 2022.01.19

그래서 CocoaPods가 뭔데!!

그래서 왜 CocoaPods가 유익하고 CocoaPods를 대체할 수 있는 것들에 대해 이야기해보자. CocoaPods는 Package Dependency Manager라고 할 수 있다. Package Dependency Manager는 프로젝트에 추가한 모든 package들을 모니터링하는 매니저이다. 만약 10개의 다른 패키지가 있다면, 그 패키지의 주인이 코드를 업데이트하였을 때, GitHub에 가서 무엇이 업데이트되었는지 직접 확인하고 직접 프로젝트의 코드를 수정할 필요 없이 터미널에서 프로젝트 폴더를 열어 pod update 명령어만 입력하면 프로젝트에서 사용하는 모든 pods의 가장 최신 버전으로 업데이트 해준다. 맨 밑줄의 경고는 아직 어떤 패키지도 포함시키지 않았기 때문에 발생하는 에러이다...

Required 2022.01.11