UITableView https://developer.apple.com/documentation/uikit/uitableview UITableView | Apple Developer Documentation A view that presents data using rows in a single column. developer.apple.com 단일 열의 세로행을 사용해서 데이터를 표시하는 뷰 각 행에는 1개의 콘텐츠가 포함된다 실제 콘텐츠를 표시하는 Cell을 제공한다 -> UITableViewCell reloadData() https://developer.apple.com/documentation/uikit/uitableview/1614862-reloaddata reloadData() | Apple D..
iOS/Swift
AutoLayout 다양한 디바이스, 화면 방향에 따라 유연하게 UI를 배치하고 조정한다 크기에 따른 반응형 조정이 없다면, 오른쪽같이 storyboard와 다른 화면에서 출력 될 때는 전부 깨져서 나올 수 있다 제약 조건 (Constraints) 뷰와 뷰 사이의 관계를 나타낸다 뷰의 위치와 크기를 결정하는 데 사용 뷰의 상대적인 위치를 설정 ㄴ Add New Alignment Constraints 각 값을 0으로 두면 가운데 정렬을 할 수 있다 이렇게 정렬하면 아이패드와 같은 화면에서도 가운데에 정렬이 된다 ㄴ Add New Constraints 오토레이아웃 엔진 (AutoLayout Engine) 제약 조건을 기반으로 뷰의 최종 위치와 크기를 계산 다양한 화면 크기와 방향에 대응할 수 있는 유연한 ..
프로토콜 Protocol 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등을 정의해둔 규약/약속 설계 조건만 제시하고 내부에서 기능을 구현하는 코드는 적지 않습니다! protocol 프로토콜이름 { // 프로토콜 정의 } // 상속받는 클래스의 프로토콜 채택 class 클래스이름: 슈퍼클래스, 프로토콜1, 프로토콜2 { // 클래스 정의 } 특징 상속과 비슷하지만 class 뿐만 아니라, struct와 enum에서도 사용할 수 있다 이름과 타입, gettable, settable을 명시한다 다중 상속이 가능하여 확장성이 좋다 타입으로 사용할 수 있다 associatedtype 프로토콜에서 실제 타입을 명시하지 않고 해당 프로토콜을 채택하는 타입에서 실제 타입을 결정하게 한다 typealias ..
내일배움캠프 앱개발 iOS 트랙 본캠프 3주차 Today I Learned 예외처리, 에러처리 프로그램에서 에러가 발생하는 상황에 대응하는 것 프로그램이 원하는대로 동작하지 않을 경우를 대비해야 하므로! 예외 처리를 통해서 예외적인 상황을 구별하고 사용자에게 어떤 에러가 발생했는지 알려주는 조치를 해야한다. Swift는 런타임에서 에러 발생한 경우 처리를 지원하는 클래스를 제공한다. Error 던져질 수 있는 오류 값을 나타내는 유형 Error 프로토콜을 사용해서 사용자 정의 에러를 만들 수 있다 enum KioskError: Error { case invalidSelection case inIsString(String) } throws , throw thorws 리턴값을 반환하기 전에 오류가 발생했을 ..
고차함수란? 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수 말이 너무 어렵다... 단순하게는? 매개변수로 함수를 가지는 함수 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다 ㄴ 왜 쓰나요? 함수형 프로그래밍의 장점을 사용하기 위해서! 코드 간결 코드 재사용 쉬움 컴파일러 최적화 측면에서의 성능 차이 멀티스레드 환경에서 부작용 방지 Reduce(_:_:) 값을 조건에 맞게 걸러내는 함수입니다 매개변수로 전달되는 클로저의 리턴 타입은 Bool 형 이에요 func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> Set - 예시 1 let cast: Set = ["Vivien", "Marlon", "..
고차함수란? 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수 말이 너무 어렵다... 단순하게는? 매개변수로 함수를 가지는 함수 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다 ㄴ 왜 쓰나요? 함수형 프로그래밍의 장점을 사용하기 위해서! 코드 간결 코드 재사용 쉬움 컴파일러 최적화 측면에서의 성능 차이 멀티스레드 환경에서 부작용 방지 Reduce(_:_:) 주어진 요소의 모든 내부 값을 더해서 반환하는 함수입니다 매개변수로 전달받은 클로저의 연산 결과를 반환한다고도 말해요 func reduce( _ initialResult: Result, _ nextPartialResult: (Result, Self.Element) throws -> Result ) r..
고차함수란? 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수 말이 너무 어렵다... 단순하게는? 매개변수로 함수를 가지는 함수 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다 ㄴ 왜 쓰나요? 함수형 프로그래밍의 장점을 사용하기 위해서! 코드 간결 코드 재사용 쉬움 컴파일러 최적화 측면에서의 성능 차이 멀티스레드 환경에서 부작용 방지 Map(_:) 기존에 있는 데이터를 변경할 때 사용해요 매개변수로 전달된 함수를 실행하고, 그 결과값을 반환합니다 기존값에 영향을 주지 않아요. 복사된 값을 반환하기 때문에 원본 값에 문제가 생기지 않아요 func map(_ transform: (Self.Element) throws -> T) rethrows -> [T] ..
상속 Inheritance 클래스가 다른 클래스로부터 메서드, 프로퍼티 등을 물려받는 것 Class의 상속 상속은 클래스에서만 할 수 있다 클래스는 단일 상속만 허용한다 메서드, 프로퍼티 등 기타 특징을 상속 가능하다 Sub-Classing 기존에 있던 클래스를 기반으로 새로운 서브 클래스를 만드는 것 == 상속 class Human { var name: String? var age: Int? var job: String? } class Teacher: Human { var subject: String? } Teacher 클래스는 Human 클래스를 상속받았다 Human의 멤버인 name, age, job을 사용할 수 있다 let teacher: Teacher = .init() teacher.name -..
프로퍼티 감시자 - 특징 프로퍼티의 값이 변할때, 동작을 수행한다 값이 바뀌기 직전에 호출되는 willSet 값이 바뀐 뒤에 호출되는 didSet 매개변수 이름이 지정되지 않았다면, 명시적으로 newValue 와 oldValue로 사용할 수 있다 willSet과 didSet 둘 중 하나만 작성해도 된다! var currentValue:Int = 100 { willSet { print("\(currentValue)에서 \(newValue)로 변경될 예정입니다") } didSet(oldData) { print("\(oldData)가 \(currentValue)로 변경되었습니다") } } 변경하려는 값이 현재 값과 같아도 동작한다 함수, 메서드, 클로저, 타입 등의 지역/전역 변수에 모두 사용 가능 - 예시..
애플 스위프트 공식 문서의 첫 문단 더보기 Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just works” in Swift, and you don’t need to think about memory management yourself. ARC automatically frees up the memory used by class instances when those instances are no longer needed. 스위프트는 당신의 앱 메모리 사용을 추적하고 관리하기 위해 자동 참조 세기(AR..
연산 프로퍼티 - 특징 저장 공간을 가지지 않음 직접 값을 가지지는 않지만, 저장 프로퍼티의 값을 읽어서 연산 실행 항상 var로 선언해야 함 선언할 때 반드시 자료형을 명시해야 함 var westernAge: Int { get { // 값을 연산하여 리턴할 때 return koreanAge - 1 } set (inputValue) { // 값을 저장(연산)할 때 var koreanAge = inputValue + 1 } } - set의 매개변수 이름은 생략가능 명시적으로 newValue 로 접근해서 사용할 수 있음 var westernAge: Int { get { return koreanAge - 1 } set { var koreanAge = newValue + 1 } } - get-only 읽기 전..
구조체와 클래스에 대한 설명 ⬇️⬇️ https://yy-dev.tistory.com/24 [Swift] 구조체 Struct / 클래스 Class 구조체 struct 구조체이름 { } 클래스 class 클래스이름 { } - Camel Case 구조체 이름의 첫 글자는 대문자로 시작한다 ❌ 언더바는 사용하지 않는게 좋다 ❌ Properties 내부에서 정의된 변수, 상수 특정 yy-dev.tistory.com 구조체 / 열거형 - 값 타입을 사용하는 경우 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶은 경우 다른 객체 또는 함수 등으로 전달될 때 참조가 아니라 복사(값 복사) 할 경우 자신을 상속할 필요가 없거나, 다른 타입을 상속 받을 필요가 없는 경우 스위프트에서의 사용 스위프트의 ..