석지한
한지석일지
석지한
전체 방문자
오늘
어제
  • 분류 전체보기 (33)
    • iOS & Swift (15)
    • 프로젝트 (13)
    • 알고리즘 (0)
    • 잡담 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 인터뷰
  • 그리디
  • 시간표
  • TableView
  • pickerView
  • Realm
  • Python
  • dp
  • 알고리즘
  • ios
  • 공식문서
  • 이분탐색
  • dfs
  • Swift
  • 개발일지
  • BFS
  • 프로젝트
  • 동적프로그래밍
  • AppDelegate
  • Greedy

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
석지한

한지석일지

iOS & Swift

[iOS] iOS 인터뷰 질문 - 5

2022. 8. 22. 19:52
반응형

 오늘도 돌아온 https://github.com/JeaSungLEE/iOSInterviewquestions 의 답변을 찾아보는 시간이다 ! 가보자고~~!

 

Delegate란 무엇인지 설명하고, retain 되는지 안되는지 그 이유를 함께 설명하라

Delegate란? (공식문서)

- 클래스 또는 구조체가 다른 유형의 인스턴스로 책임을 전달 또는 위임할 수 있도록 하는 디자인 패턴

- 이 디자인 패턴은 delegate라고 하는 위임(전달) 기능을 제공하도록 보장하는 프로토콜을 정의함으로써 실행됨.

- 특정 액션에 응답하거나 해당 소스의 타입을 몰라도 외부 소스의 데이터를 검색할 수 있음. 

 

-> 객체 지향 프로그래밍에서 하나의 객체가 모든 일을 처리하는 것이 아닌, 처리해야 할 일 중 일부를 다른 객체에 넘기는 것(ex: UITableViewDelegate, UITextFieldDelegate). delegate를 설정하여 누군가에게 할 일을 넘겨주고, 특정 이벤트에 대해 어떤 일을 해줘야 하는지 작성하는 것.

 

이해하기 좋은 글

(https://zeddios.tistory.com/8)

 

retain이란 ? 

- 메모리가 해제되지 않고 유지되어 메모리가 낭비되는 현상을 의미

 

정리해보면...

 Delegate 또한 객체 간의 참조가 이루어 지기 때문에 retain cycle 현상이 발생할 수 있다. 따라서 delegate를 weak으로 선언하여 메모리가 해제될 시 자동으로 해제시킬 수 있도록 해야 한다.

 해제하지 않을 경우 생기는 현상은 ..

(https://fomaios.tistory.com/entry/iOS-%EB%A9%B4%EC%A0%91%EC%A7%88%EB%AC%B8-Delegate%EB%8A%94-retain%EC%9D%B4-%EB%90%A0%EA%B9%8C)

 

 

NotificationCenter 동작 방식과 활용 방안에 대해 설명하라

 너무 좋은 포스팅들이 존재하여 해당 포스팅으로 대체하겠다.

(https://sueaty.tistory.com/163), (https://daheenallwhite.github.io/ios/2019/10/13/Notification-Center/)

 

 

UIKit 클래스들을 다룰 때 꼭 처리해야 하는 애플리케이션 스레드 이름은 무엇인가?

-> Main Thread.

(스레드 : 프로세스 내에서 실제로 작업을 수행하는 주체. 모든 프로세스에는 한 개 이상의 스래드가 존재하여 작업을 수행함.

 프로세스 : 실행 중인 프로그램)

 

  애플 공식문서에서 설명하기를 UIKit 클래스는 메인 스레드 혹은 메인 dispatch queue에서만 사용하여야 한다고 나와있다.(다른 방법들이 지시되어 있지 않는 조건에서)

 사실 이 부분에 대해서는 내가 명확하게 알아가지는 못했고, 애플에서 디자인적 측면을 위해 main 스레드에 UI를 잡아먹도록 만든 것이라고 한다. 성능적인 측면에서 유리하도록 하기 위함이라고. 

 

(https://rolypolytoy.tistory.com/22, https://medium.com/remember/%EC%99%9C-ui-%EC%B2%98%EB%A6%AC%EB%A5%BC-main-thread%EC%97%90%EC%84%9C-%ED%95%B4%EC%95%BC%ED%95%98%EB%82%98-5b2ba268f4eb) 

위의 링크를 참고하는 것이 좋겠다.

 

 

App Bundle의 구조와 역할에 대해 설명하라

App Bundle 이란 ?

- 개발자들에 의해 생성되는 가장 흔한 번들

- 앱이 정상적으로 작동하기 위해 필요한 모든 것들

- 플랫폼에 따라 상세한 구조는 다르지만 번들을 사용

 

App Bundle에 포함되어 있는 파일

- Info.plist : 앱에 대한 구성, 정보를 포함한 파일

- Excutable : 모든 앱은 실행 가능 파일이 있어야 하고 앱의 메인 진입점과 정적으로 앱 타겟에 연결된 코드가 포함

- Resources : 앱의 실행 가능한 파일밖에 데이터 파일로 존재. 이미지, 아이콘, 사운드, 문자열 파일 등이 구성됨

- Other support files : 커스텀 데이터 리소스를 iOS 앱 번들에 포함할 수 있지만, 커스텀 프레임워크 또는 플러그인은 포함할 수 없음

 

App Bundle 구조

- MyApp : 앱의 코드를 포함하고 있는 실행 가능한 파일. 실제 프로젝트 명

- App icons 

- Info.plist

- Launch images

- MainWindow.nib : 앱 런치 시간에 앱을 로드하기 위한 기본 인터페이스 객체를 포함. 앱의 메인 윈도우 객체와 앱 델리게이트 객체를 포함

- Settings.bundle

- Custom resource files

 

--> iOS App Bundle은 코드와 리소스 디렉터리의 구조를 통해 개발자의 앱 개발을 도움. 이 구조는 코드나 리소스의 예측 가능한 로딩과 지역화 기능을 가능하게 해 줌.

(https://thoonk.tistory.com/64)

 

 

모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?

UIViewController

 

UIViewController 클래스는 모든 viewController에 공통적인 동작을 정의.

 

주요 역할은

- 데이터 변화에 따라서 view 컨텐츠를 업데이트

- view와의 사용자 상호작용에 응답

- view를 리사이징 하고 전체적인 인터페이스의 레이아웃 관리

- 앱 내에서 다른 객체와의 조정

(https://melod-it.gitbook.io/sagwa/app-frameworks/uikit/view-controllers/uiviewcontroller)

 

다음에도 또 봐요 ~~~!

반응형

'iOS & Swift' 카테고리의 다른 글

[iOS] iOS 인터뷰 질문 - 4  (0) 2022.08.01
[iOS] iOS 인터뷰 질문 - 3  (0) 2022.07.08
[iOS] SceneDelegate란 ?  (0) 2022.05.23
[iOS] iOS 인터뷰 질문 - 2  (0) 2022.05.17
[iOS] iOS 인터뷰 질문 - 1  (0) 2022.05.11
    'iOS & Swift' 카테고리의 다른 글
    • [iOS] iOS 인터뷰 질문 - 4
    • [iOS] iOS 인터뷰 질문 - 3
    • [iOS] SceneDelegate란 ?
    • [iOS] iOS 인터뷰 질문 - 2
    석지한
    석지한
    iOS

    티스토리툴바