첫 면접으로 포트폴리오 기준으로 준비를 했지만, 생각 정리가 안되서 만족스러운 대답을 못했던 것 같다 🥲 그래도 부족한 부분을 알 수 있던 좋은 계기라 생각하며, 나름 열심히 정리해보려고 합니다 😁 기술 면접 관련 질문들 📑 final 에 대하여 ▾ 사용의 의미 재정의 및 상속을 방지합니다. 코드의 런타임 성능이 향상됩니다. (= 런타임 오버 헤드가 제거되고 정적 디스패치가 구현됩니다 ) 코드의 런타임 성능이 향상된다 ❓ 런타임에 컴파일러 계산을 피하면 프로그램이 효율적이고 빨라집니다. 시스템 관점에서는 클래스 멤버가 참조 될 때마다 런타임에 다음 계산을 수행해야합니다. 클래스가 코드의 어느 곳에서나 상속되었는지 or 그 자체가 하위 클래스인지 확인합니다. 클래스 멤버가 재정의되었는지와 횟수를 확인합니다..
이슈 💣 기존 Collection View Cell이 데이터 개수에 맞춰 동적으로 높이 변경이 이뤄져야 했다. 쓴이의 구현은 Layout이 겹침으로 오류가 발생해 원활하게 적용이 되질 않았다. 쓴이의 구현 👨🏻💻 sizeForItemAt을 이용하여 Cell의 기본 높이 값을 부여하고, cellForItemAt에서 Cell의 데이터 개수에 맞게 Height 값을 Cell로 보내서 Cell의 높이를 바꿔주려 했다. 아래는 CollectionView의 extension 코드로 sizeForItemAt & cellForItemAt의 해당 내용 부분만 보여줍니다. ▾ // cellForItemAt func collectionView(_ collectionView: UICollectionView, cellForI..
HIG❗️ 정의 ▾ 문서에 따르면 "Get in-depth information and UI resources for designing great apps that integrate seamlessly with Apple platforms" 이는 "Apple 플랫폼과 완벽하게 통합되는 훌륭한 앱을 설계하기 위한 심층적인 정보 및 UI 리소스 확보" 라고 해석이 됩니다. 애플에서는 일관된 사용자 경험을 제공하기 위해 애플의 제품에서 구동될 어플을 제작할 때 지켜야할 가이드라인을 제공합니다. 핵심 가치 ▾ 명확함 (Clarity) 글자는 어떠한 크기로 설정하든 알아보기 쉬워야합니다. 아이콘은 의미가 정확히 전달되어야합니다. 무례하거나 적절하지 않은 꾸미기는 지양해야합니다. 예리한 기능에 대한 이해는 디자인에..
SOLID 🤷🏻♂️ 아래의 5가지 원칙의 앞 글자를 따서 만들어진 SOLID 원칙 ▾ S ( Single Responsibility Principle ) : 단일 책임 원칙 O ( Open / Close Principle ) : 개방/폐쇄 원칙 L ( Liscov Substitution Principle ) : 리스코브 치환 원칙 I ( Interface Segregation Principle ) : 인터페이스 분리 원칙 D ( Denpendency Inversion Principle ) : 의존성 역전 원칙 Why used it ❓ 쉽게 변경이 가능한 유연한 코드를 가지게 됩니다. 이것은 재사용과 유지 관리가 가능합니다. 그렇게 개발된 소프트웨어는 안정되고, 탄탄하며 확장성이 뛰어날 것입니다. ( 새..
옵저버 패턴 ❓ 옵저버 패턴은 한 Object의 상태가 바뀌면 그 객체에 의존(구독) 하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 1:N(1대다) 관계를 정의합니다. 예시로 유튜브에서 구독자에게 알림 메시지를 보내는 것처럼 관찰 중인 객체에서 발생하는 이벤트를 여러 다른 객체에 알리는 메커니즘입니다. ⚠️ 용어 설명 Subject → 구독자(Concrete Observer)가 이벤트를 받을 주요 주제(Subject) 해당 Subject의 특정 이벤트 변경 시 구독하고 있는 구독자들이 해당 이벤트를 수신합니다. Observer → 구독자들의 부모가 되는 인터페이스 (Java에서는 추상 클래스) Concrete Observer → Observer 인터페이스를 상속받고, Subject에..
싱글톤 패턴❓ 특정 용도로 객체를 하나만 생성하여 공용으로 사용하고 싶을 때 싱글톤(Singleton) 디자인 패턴을 활용합니다. 싱글톤(Singleton)으로 구현된 클래스는 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이며, 최초 생성 이후에 호출된 생성자는 최초의 생성가 생성한 객체를 리턴합니다. 객체는 하나만 생성하여, 생성된 객체를 어디서든 참조할 수 있도록 하는 패턴입니다. 예시 ▾ class UserInfo { var id: String? var password: String? var name: String? } // A 뷰 컨트롤러 let userInfo = UserInfo() userInfo.id = "Sodeul" // B 뷰 컨트롤러 let userInfo = UserI..
FSCalendar 라이브러리 사용 후기 & 사용법 📑 시작에 앞서 FSCalendar Github 주소도 함께 공유합니다. 📎 ⚠️ 필자가 직접 사용했던 방법을 중점으로 작성했으니, 가볍게 참고해주시면 감사합니다. ☺️ https://github.com/WenchaoD/FSCalendar GitHub - WenchaoD/FSCalendar: A fully customizable iOS calendar library, compatible with Objective-C and Swift A fully customizable iOS calendar library, compatible with Objective-C and Swift - GitHub - WenchaoD/FSCalendar: A fully cus..
이슈 📑 아래 사진처럼 Collection View Cell의 dequeueReusableCellWithIdentifier의 이슈입니다. Cell이 재사용의 될 때 해당 Cell의 데이터도 그대로 재사용이 되었습니다. dequeueReusableCellWithIdentifier 📎 원리 Table View 위로 스크롤 되어 화면에서 사라지는 Cell은 Queue(큐)로 들어가고 Queue(큐)의 front에 있는 Cell이 화면의 하단에서 올라와 화면에 보여지는 셀로 사용된다. dequeue & reuse는 cellForRowAt 메소드에서 dequeueReusableCellWithIdentifier 함수를 통해 이루어지는데 셀에 configure(구성)되는 데이터소스의 내용은 다르지만 셀 자체는 재사..
Info.plist ❓ 프로젝트 설정을 담당하는 파일 번들을 식별하고 구성하는 키 값 쌍이 포함된 리소스 실행 패키지에 관한 필수 설정 정보가 포함된 구조화된 텍스트 파일 일반적 유니코드 UTF-8로 인코딩 & 내용은 XML을 사용 구성 요소 📑 CF Type ❓ CF → Core Foundation ( C포인터 타입 ) Localization native development region (CFBundleDevelopmentRegion) ▾ 번들이 만들어진 주 지역을 설정함 기본적인 언어가 해당 나라 언어의 맞게 나옴 값을 Korea로 바꾸면 설정 등 언어가 한국어로 나온다❗️ Executable file (CFBundleExecutable) ▾ 실행 가능한 파일 보통 프로젝트 이름이 초기값으로 설정됨..
• General 💻 → Xcode 개발 환경의 일반적인 공통 사항을 설정한다. 빌드 중에 이슈가 있을 때 멈추거나, 빌드하지 않더라도 실시간으로 이슈를 찾아주는 옵션 등이 있다. Identify 📓 Display Name ▾ 앱이 표시될 이름 Bundle Identifier ▾ 앱을 고유하게 식별하는 번들 ID 관리 번들 ID 기능 리소스로 기능을 할당하거나 프로파일 리소스를 사용하여 프로비저닝 프로파일을 생성하려면 번들 ID가 필요함 프로비저닝 프로파일 ❓ 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다 version ▾ 버전을 뜻함 ex) 1.0.0 첫 번째의 1은 대규모 업데이트 시 증가 두 번째는 기능..