SeSAC

SeSAC

8.24 ~ 8.25 TIL(SeSAC iOS 3기)

Generic 타입에 유연하게 대응하기 위한 요소. 제네릭으로 구현한 타입과 기능은 재사용하기 쉽고 코드의 중복도 줄일 수 있기 때문에 깔끔하고 추상적인 표현이 가능. T: Type Parameters로 플레이스 홀더와 같은 역할을 함. 타입의 종류는 알려주지 않지만 특정한 타입이라는 것은 알려줌. T가 아닌 다른 문자열을 작성해도 되지만, 일반적으로는 UpperCased 또는 T, U 등을 사용함. 🔥 만약 함수를 오버로딩하는데 제네릭을 사용한 경우, 제네릭으로 구현한 함수보다 타입이 명확한 함수가 우선순위가 더 높다. 🔥 프로토콜에서 제네릭을 사용하려면 associated type 을 사용해야 한다. protocol GenericExample { associatedtype T var variable:..

SeSAC

8.23 TIL(SeSAC iOS 3기), MapKit + frozen Enumeration

MapKit MKMapView를 활용한 맵뷰 구현하기 1. import MapKit 2. MKMapView 인스턴스 생성 3. MKMapView의 region과 annotation 설정 center: 맵뷰의 중심이 되는 좌표. latitudinalMeters, longitudinalMeters: 축적. removeAnnotations([Annotation]): 맵뷰의 모든 Annotation을 삭제. extension MapViewController { func configureMapView() { if let coordinate = LocationManager.shared.currenCoordinate { let region = MKCoordinateRegion( center: coordinate, l..

SeSAC

8.23 TIL(SeSAC iOS 3기), CoreLocation

CoreLocation CLLocation을 활용한 위치정보 받아오기 import CoreLocation CLLocationManager() : 위치에 대한 대부분의 로직을 담당하는 매니저 객체를 생성. CLLocationManagerDelegate 프로토콜 채택 및 기능 구현. didUpdateLocations: 사용자의 위치를 성공적으로 가져온 경우, 위치 업데이트 시점마다 호출됨. didFailWithError: 사용자의 위치를 가져오지 못한 경우. locationManagerDidChangeAuthorization: 사용자의 권한 상태가 바뀌면 알려줌(iOS14+, 14 이전은 didChangeAuthorization) locationManager.delegate = self: 위치 프로토콜 de..

SeSAC

8.21 ~ 8.22 TIL(SeSAC iOS 3기)

IBInspectable과 IBDesignable IBInspectable Interface Builder에 해당 값의 정보를 보여줌 final class CustomButton: UIButton { @IBInspectable var cornerRadius: CGFloat { get { return layer.cornerRadius } set { layer.cornerRadius = newValue } } } IBDesignable 컴파일 타임에 InterfaceBuilder에서 설정한 속성이 스토리보드에 반영 import UIKit @IBDesignable final class CustomButton: UIButton { @IBInspectable var cornerRadius: CGFloat { ge..

SeSAC

8.14 ~ 8.18 TIL

1. Enum과 Stored Property Enums must not contain storde properties 열거형에서 저장 프로퍼티를 선언할 경우 다음과 같은 에러가 발생한다. 열거형은 컴파일 타임에 로드되므로 인스턴스를 생성할 수 없기 때문에, 저장 프로퍼티는 열거형 내에서 선언할 수 없다. 연산 프로퍼티는 값을 저장하지 않으므로 열거형 내에서 선언이 가능하다. 인스턴스 연산 프로퍼티는 인스턴스 프로퍼티만, 타입 연산 프로퍼티는 타입 프로퍼티만 사용이 가능하다. enum AAA: String, CaseIterable { static let baseURL = "https://www.naver.com" case aa case bb case cc // test: 인스턴스 연산 프로퍼티 -> 값을 ..

SeSAC

8.7 ~ 8.11 TIL

1. overriding vs overloading - overriding: 서브 클래스에서 슈퍼 클래스의 메서드, 프로퍼티, 서브스크립트를 재정의 하는 것. - overloading: 매개변수, 반환 타입의 차이로 동일한 이름의 함수를 구분하는 것, 동일한 이름의 함수를 중복 선언하는 것. 2. URL의 구조 http://news.naver.com:80/article/3234234?lang=ko&page=1 scheme http:// 네트워크 통신에 사용할 프로토콜 http, https, ftp 등 host news.naver.com port - :80 path /article/3234234 query string ?lang=ko&page=1 URL 허용 문자 URL에서는 기본적으로 ASCII 코드 값..

SeSAC

7.31 ~ 8.4 TIL

1. XIB(XML Interface Builder) 많이 사용되는 UI, 디자인은 xib 파일로 분리해서 사용하곤 함. xib로 생성한 Cell은 테이블뷰(컬렉션뷰)에 register 하는 과정이 필요하다. func configureUI() { let nib = UINib(nibName: SearchTableViewCell.identifier, bundle: nil) tableView.register(nib, forCellReuseIdentifier: SearchTableViewCell.identifier) tableView.dataSource = self tableView.delegate = self ... } xib를 컴파일하면 nib으로 변환되기 때문에, nib 파일을 등록하는 것. UINib은 ..

SeSAC

7.24 ~ 7.28 TIL

1. Date Detector(UITextView) - TextView에서 전화번호, 주소 등을 자동으로 감지하고 이동 기능을 제공. - editable을 false로 설정해야, 링크를 탭했을때 원하는 기능을 이용할 수 있음. 2. Segue 방식으로 이전 뷰로 돌아가는법, unwind - unwind: 세그먼트 방식으로 화면전환시 뒤로가기, 기존 VC로 돌아가기 1. 돌아갈 ViewController에서 직접 IBAction을 구현(unwind/segue) 2. PresentedViewController에서 dismiss 기능을 추가할 버튼에, 위에서 구현한 Action Segue를 연결 세그먼트는 이동할 때마다 기존 화면의 위에 새로운 씬이 쌓이는 개념임. 이전 씬으로 돌아갈때 unwind 방식으로 ..

SeSAC

7.20 ~ 21 TIL

1. @available, #available - 버전 분기 구현 iOS 버전에 따라 지원하거나 지원하지 않는 기능이 있기 때문에 필요에 따라(최소 버전) 버전 분기 처리가 필요하다. @available 클래스, 프로토콜, 함수 앞에 선언하여 적용할 플랫폼, OS를 제한함. ex - iOS 13 미만 버전 대응시 필요한 AppDelegate 분기처리 // MARK: UISceneSession Lifecycle @available(iOS 13.0, *) func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOp..

SeSAC

7.18~19 TIL(새싹 iOS 1,2일차/Two days I Learned)

1. iOS 15를 기준으로 UIButton이 많이 다르다 iOS 15부터 UIButtonConfiguration이 추가되었고, style이 생김(plain, gray, tinted, filled) style을 안쓰는 기존의 UIButton으로 하려면 style을 default로 설정하면 됨(Interface Builder 기준) 유의해야될 점 1. UIButtonConfiguration(style)을 사용할 경우 상황에 따라 버전대응이 필요 iOS 15 이전 버전에서는 UI가 의도와는 다르게 그려짐 따라서 최소버전이 iOS 14 이하라면, 버전별 분기처리를 해야함(키워드, @available) 2. UIButtonConfiguration을 사용할 경우 이미지 크기 변경에 제약이 있음 style butt..

예스코치
'SeSAC' 카테고리의 글 목록