전체 글(55)
-
Any와 AnyObject의 차이점을 설명하세요.
Answer Any는 Swift의 모든 타입을 지칭하는 키워드로, 어떤 타입도 수용 가능합니다. AnyObject는 모든 클래스 타입을 지칭하는 프로토콜로, 클래스의 인스턴스만 수용 가능하기 때문에 클래스의 인스턴스가 아니면 할당할 수 없습니다. 1. Any Swift의 모든 타입을 지칭하는 키워드 var someAny: Any = 100 someAny = "어떤 타입도 수용 가능합니다" someAny = 123.12 // let someDouble: Double = someAny // 컴파일 오류발생 // someAny = nil // 컴파일 오류발생 Any 타입에 123.12라는 Double 자료를 넣어두었더라도, Any는 Any 타입이지 Double 타입이 아니기 때문에 위와 같은 형태로 할당할 수..
2022.07.04 -
오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지)
오토레이아웃을 코드로 작성하는 방법에는 3가지가 존재한다. 1. NSLayoutConstraint 2. NSLayoutAnchor 3. VFL(Visual Format Language) 여기서 잠깐!! 스토리보드에서 오토레이아웃을 잡을 때에는 translatesAutoresizingMaskIntoConstraints 속성이 자동으로 false로 반영된다. 하지만 코드로만 개발을 할 때에는 그렇지 않기 때문에 translatesAutoresizingMaskIntoConstraints = false를 직접 써줘야 한다.(SnapKit 라이브러리 사용 시, 자동으로 반영된다.) 1. NSLayoutConstraint 속성값이 길고 직관적인편이나 코드가 길어지게 되면 가독성이 떨어진다는 단점이 있다. NSLay..
2022.06.22 -
Extension에 대해 설명하시오.
확장(Extensions) 여기서 잠깐 ⚠️ 위 애플 가이드에서 "익스텐션은 타입에 새 기능을 추가할 수 있지만 Override는 할 수 없다." 라고 명시되어 있다. 하지만 개발을 하면서 Extension을 통해 Override는 사용 가능하다. 위 소스코드를 보면 Extension에서 shouldAutorotate라는 변수와 viewDidLoad라는 메소드를 Override하고 있고, 에러가 발생하지 않는 것을 볼 수 있다. 이러한 일이 가능한 이유는 컴파일러가 Objective-C와의 호환성을 위해 Extension에서 Override를 허용하기 때문이다. 즉, 메소드가 Objective-C와 호환되는 경우에만 Extension에서 메소드를 Override 할 수 있다는 것이다. 또한 Extensi..
2022.06.10 -
앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?
생명주기 앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 뜻한다. 앱의 상태는 앱이 현재 어떠한 것을 할 수 있는 가를 결정한다. Foreground 상태 : 유저와 직접 상호작용하기 때문에(사용자가 보고 있는 화면) 시스템 자원 사용 등에서 CPU를 비롯한 시스템 자원의 우선순위가 높은 상태이다. Background 상태 : 스크린에 드러나지 않기 때문에 작업을 하지 않거나, 최소한의 작업만 수행해야 한다. Background에 진입했다는 것은 앱이 실행중이지 않다는 의미는 아니다. ex) 음악 앱을 이용하여 노래를 듣는 등 앱이 Background 상태가 되어도 계속 실행해야 될 때가 존재한다. 앱 상태 (UIKit App State) 앱의 상태가 변하게 되면..
2022.05.22 -
실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.
'실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하라'는 다른 말로 '시뮬레이터만으로 할 수 있는 것과 할 수 없는 것을 설명하라'는 말이다. 공식 문서의 내용을 요약하자면, 시뮬레이터는 Mac 기반에서 돌아가기 때문에 컴퓨터의 자원을 활용한다. 이 때, 컴퓨터의 자원이라 함은 CPU, memory 그리고 network connection 등이 될 수 있다. 그렇기 때문에 시뮬레이터 상에서 테스트되는 앱들은 실제 디바이스에서 구동 될 때 보다 빠르고, 부드럽게 동작할 수 있으며, 시뮬레이터에서 테스트 했을 때 보여주는 퍼포먼스 또한 정확한 앱의 성능을 나타내지 않는다는 것을 유의해야 한다. 대부분은 시뮬레이터에서도 테스트가 가능하지만 하드웨어적인 변화가 필요한 요소들 및 몇몇 ..
2022.05.19 -
Bounds와 Frame의 차이점을 설명하시오.
Bounds와 Frame이 무엇인지 알아보기에 앞서 뷰의 좌표계에 대해 알아봅시다. UIKit에서 기본이 되는 뷰의 좌표계는 좌측 상단 모서리인 origin(0,0)을 원점으로 합니다. 사진을 통해 알 수 있듯이 이것은 원점으로부터 아래쪽, 오른쪽 방향으로 확장되는것을 볼 수 있습니다. 좌표값은 해상도와 상관없이 콘텐츠의 위치를 잡는 부동소수점을 사용하여 나타내고 수평축은 x로, 수직축은 y로 표현합니다. 1. Frame 애플문서에서는 Frame을 'SuperView(상위뷰)의 좌표 시스템 안에서 View의 위치와 크기를 나타낸다' 라고 설명되어 있습니다. 즉, 뷰의 크기와 위치를슈퍼뷰의 좌표계를 기준으로 나타냅니다. 2. Bounds 애플문서에서는 Bounds를 'View의 위치와 크기를 자신만의 좌표..
2022.05.11