본문 바로가기

전체 글60

[Swift] 제네릭 (Generic) 제네릭 (Generic) 제네릭 💡 제네릭이란? 함수, 타입 및 데이터 구조에 대한 유연하고 추상적인 코드를 작성할 수 있게 해주는 기능 다양한 타입에서 작동하도록 일반화된 코드를 작성할 수 있게 해준다. 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있다. 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤의 화살괄호 기호 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시한다. 제네릭은 실제 타입 이름을 써주는 대신에 placeholder를 사용한다. [ eg: T, V, U ] placeholder는 타입의 종류를 알려주지 않지만 어떤 타입이라는 것은 알려준다. placeholder의 실제 타입은 함수가 호출되는 순간 결정된다... 2023. 12. 13.
[Swift] 확장 (Extension) 확장 확장(Extension) 확장을 이용하여 structure, class, enum, protocol 타입에 새로운 기능을 추가할 수 있다. 기존 타입에 기능을 추가하는 수평 확장하는 개념이다. 확장은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 확장을 사용할 수 있다. extension 확장할 타입 이름 { //타입에 추가될 새로운 기능 구현 } extension 확장할 타입 이름: 프로토콜1, 프로토콜2, 프로토콜3 { //프로토콜 요구사항 구현 } 확장(Extension)이 가능한 경우와 불가능한 경우 Extension으로 구현 가능한 것들: 새로운 계산된 속성(Computed Property.. 2023. 12. 13.
[Swift] 프로토콜 프로토콜 프로토콜 (Protocol) 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등을 정의 해놓은 “규약” 혹은 “약속” class, structure, enum이 프로토콜을 ‘채택’하고 모든 요구사항을 충족하면 프로토콜을 ‘준수’했다고 한다. class, structure, enum이 프로토콜을 채택해서 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 프로토콜은 설계된 조건만 정의를 하고 제시를 할 뿐 스스로 기능을 구현하지 않는다. 프로토콜에서는 이름과 타입 그리고 gettable, settable을 명시한다. 프로퍼티는 항상 var로 선언해야 한다. 메서드를 정의할 때 메서드 이름과 리턴값을 지정할 수 있고, {}(구현 코드)는 적지 않는다. 상속과 유사하다고.. 2023. 12. 13.
[Swift] ARC와 메모리 누수 ARC와 메모리 누수 ARC(Automatic Reference Counting) 메모리 관리 기법 중 하나로, 객체나 인스턴스가 참조되는 횟수를 추적하여 메모리에서 해제할 시점을 결정한다. 객체가 생성될 때마다 참조 횟수가 1 증가하고, 해당 객체를 참조하는 다른 객체나 변수가 없어지거나 더 이상 사용되지 않을 때 참조 횟수가 1 감소한다. 참조 횟수가 0이 되면 해당 객체는 메모리에서 해제된다. ARC의 작동 방식 객체 생성: 객체가 생성되면 참조 횟수가 1 증가한다. 객체 참조: 객체를 다른 변수나 상수에 할당하면 해당 객체의 참조 횟수가 1 증가한다. 참조 해제: 객체의 참조가 없어지면(참조하는 변수나 상수가 없거나 **nil**이 할당되면) 참조 횟수가 1 감소한다. Zeroing Weak Re.. 2023. 12. 13.
[Swift] 예외처리 예외처리 실패 가능한 상황과 예외 처리 에러처리 프로그램에서 에러가 발생한 상황에 대응하고 이에 대응하는 과정 Swift에서는 런타임에 에러가 발생한 경우, 이를 처리를 지원하는 클래스를 제공한다. 프로그램에서 모든 기능이 개발자가 예상하고 원하는대로 동작한다는 보장은 없다. 따라서 예외 처리를 통해 예외 상황을 구별하고 프로그램 자체적으로 오류를 해결하거나, 사용자에게 어떤 에러가 발생했는지 알려주는 등에 대한 조치와 대응을 해야한다. Error Error는 던져질 수 있는 오류 값을 나타내는 유형을 말한다. Error 프로토콜을 채택하여 사용자 정의 에러를 정의하여 사용할 수 있다. 참고 자료: https://developer.apple.com/documentation/swift/error Error.. 2023. 12. 12.
[Swift] 고차함수 (map, filter, reduce) 고차함수 map 함수 map 함수는 컬렉션 내부의 기존 데이터를 변형(transform)하여 새로운 컬렉션를 생성한다. 기존의 컬렉션의 요소에 대해 정의한 익명함수로 매핑한 결과를 새로운 컬렉션으로 반환한다. // for 문으로 구현 let num = ["1", "2", "3", "4", "5"] var numberArray: [Int] = [] for index in num {// num이라는 것을 반복문을 돌려서 각각의 요소를 index라는 변수에 넣어줌 if let changeToInt = Int(index) { numberArray.append(changeToInt) } } print(numberArray) // [1, 2, 3, 4, 5] // map으로 구현 let stringArray = [.. 2023. 12. 12.