목록전체 글 (88)
iOS 개발일지

Required Initializer라는 이름에서 알 수 있듯이, 반드시 구현해야하는 이니셜라이저를 뜻한다. 만약 클래스에 required init이 있다면, 해당 클래스를 상속받는 자식 클래스는 required init을 반드시 구현해야 한다. 코드로 UI를 구현하기 위해 init(frame: )을 호출하면 오류가 발생한다. 모든 View는 NSCoding 프로토콜을 채택하고 있기 때문에, 위와 같은 오류가 발생하는 것이다. 부모 클래스에서 프토토콜을 채택하고 있고, 해당 프로토콜에 init이 있을 경우에도 required init를 구현해야 한다. 덧붙여서 Swift에서는 특정 조건을 만족하면 부모의 이니셜라이저를 자동 상속받을 수 있다. 1. 만약 자식 클래스에서 추가된 저장 프로퍼티가 모두 기본값..

iOS 앱 개발자 데뷔 과정 33회차 #1. Checklist - TypeCasting - Type Cast operator 인스턴스 타입을 확인하거나, 자신의 인스턴스 타입을 다른 타입의 인스턴스인 것처럼 사용할 때 활용되는 개념이다. 타입 캐스팅을 하더라도 실제 인스턴스 타입은 메모리에 남아있다. is 는 어떤 클래스의 인스턴스 타입인지, 어떤 데이터 타입인지 확인할 때 사용하며 Bool을 반환한다. - upcasting : as 컴파일러가 캐스팅에 대한 성공을 확신할 수 있는 경우 as 를 사용할 수 있다. 일반적으로 부모 클래스의 타입인 것을 알고 있을 때 as 를 사용한다. - downcasting : as! as? 부모 클래스 타입을 자식 클래스 타입으로 내려서 캐스팅하는 것을 말한다. 타입이..

iOS 앱 개발자 데뷔 과정 32회차 #1. Checklist - iOS Layout - 코드로 뷰 객체 생성 / Layout 설정 - 1. 뷰객체 프로퍼티 선언. 클래스의 인스턴스를 생성 2. 명시적으로 루트뷰에 추가 3. 크기와 위치 및 속성 정의 iOS Layout은 Frame Based Layout ➡️ Auto Layout ➡️ Adaptive Layout 순으로 확장되어 왔다. - Frame Based Layout 왼쪽 맨 위를 (0,0) 으로 해서, x좌표와 y좌표 그리고 크기를 설정해 레이아웃을 설정한다. - Auto Layout 특정 제약조건을 걸어 뷰끼리의 관계를 통해 View를 표현한다. NSConstaistsLayout, Visual Format Language, NSAnchorLa..

iOS 앱 개발자 데뷔 과정 31회차 #0. Memo - UIView.animate 해당 메소드를 사용하면 쉽게 그럴듯한 애니메이션 효과를 줄 수 있다. 최소로 설정이 필요한 정보는 [ 시작 - 시간 - 끝 ] 으로, 위의 코드에서는 시작을 alpha 0으로, 시간을 3으로, 끝을 alpha 1로 설정했다. 앱이 실행되었을 때 tutorialLabel은 투명한 상태였다가 3초에 걸쳐 점점 선명해지는 애니메이션이 적용된다. - 예시 아래에서 설명할 Custom Framework를 통해 간단하게 구현해본 화면 예시이다. 이 중 UIActivityViewController는 처음 본 컨트롤러이기 때문에 기억해놓는 것이 좋을 것 같다. #1. Checklist - Custom Framework 프레임워크를 통해..

iOS 앱 개발자 데뷔 과정 6주차 마무리 #2. Assignment - OpenWeatherMap API 구현하기 - API 문서와 JSON Response를 확인하여 현재 온도, 습도, 바람 최소 3가지 정보를 사용자에게 보여준다. - 오픈웨더 사이트에서 제공해주는 iconURL을 사용해 날씨 상태에 따라 이미지를 보여준다. 생각보다 어렵지는 않았지만, 1. APIManager를 만들고, OpenWeatherMap의 정보를 요청하는 함수를 작성한다. 2. didUpdateLocations에서 completionHandler를 통해 받아온 정보를 뷰에 나타낸다. 3. 새로고침이 없으면 섭섭하지! 버튼을 눌렀을 때 위치를 받아오는 로직을 다시 실행하도록 만들었다. - CLOVA API 구조 개선하기 - ..

iOS 앱 개발자 데뷔 과정 30회차 #0. Memo - 카메라 기능 사용하기 : YPImagePicker - 카메라 기능 사용하기 : UIImagePickerController #1. Checklist 클라이언트에서 서버에 요청만 하는 것이 아닌, 이미지나 PDF 등을 업로드해야 하는 일도 있을 수 있다. 이 때 이미지 파일 자체가 전송되지는 않기 때문에, 파일을 텍스트 형태로 인코딩하여 HTTP Body에 담아 서버로 전송해야 한다. - Content-Type 어떤 종류의 파일(이미지, 비디오, json, pdf 등)을 서버에 전달할 것인지 명시하기 위해 사용한다. THHP Header에서 MIME 타입을 표현하며, 하나의 파일만을 서버에 업로드한다면 명확한 타입으로 설정한다. - Multipart ..

iOS 앱 개발자 데뷔 과정 29회차 #1. Checklist - iOS Privacy Authorization 개인정보와 관련된 데이터와 리소스, 사용방법을 투명하게 공개해서 사용자와의 신뢰를 구축하는 것이 중요하다. info.plist info.plist 에서 권한 설정을 해야 하는데 올바르게 설정하지 않았을 경우 리젝 사유가 될 수 있다. 꼭 필요한 권한만 설정해야하며, 필요한 권한을 설정했더라도 권한에 대한 필요성 Description이 구체적이어야만 리젝이 되지 않는다. Pricacy - Location 키의 종류는 6가지가 있는데, iOS 버전과 액세스 시점에 따라 선택한다. - CLLocation CLLocation은 사용법이 복잡해서, 최대한 흐름에 맞게 번호순으로 나열하면 아래와 같다. ..

iOS 앱 개발자 데뷔 과정 28회차 #1. Checklist - awakeFromNib 셀 UI를 초기화하는 메서드로, 재사용 매커니즘에 의해 일정 횟수 이상 호출되지 않는다. 변경되지 않는, 고정적인 틀과 같은 UI를 설정할 때 사용하면 불필요한 호출을 줄일 수 있다. - prepareForReuse 셀이 재사용 될 때 초기화 하고자 하는 값을 넣으면 셀이 재사용되며 발생할 수 있는 오류를 해결할 수 있다. 즉, cellForRowAt에서 모든 indexPath.item에 대한 조건을 작성하지 않아도 된다. - awakeFromNib과 prepareForReuse, 그리고 cellForRowAt과 cellForItemAt 호출 시점 알아보기 * 현재 뷰는 TableView의 안에 Ceollection..