iOS/Swift

iOS/Swift

[Swift] 매우 간단하게 함수의 성능을 개선하기(메모리 관리)

func addTwoNumbers(num1: Int, num2: Int) -> Int { var result = num1 + num2 return result } 위와 같은 구조를 가진 함수의 동작 방식을 메모리 영역을 기준으로 간단하게 살펴보면 다음과 같은 순서를 가진다. 1. 임시공간을 만든다 2. num1라는 상수에 Int값을 저장한다 3. num2라는 상수에 Int값을 저장한다 4. result 변수 공간을 만든다 5. num1 + num2를 더해 임시값을 가진다 6. 임시값을 result에 할당한다 7. result의 값을 임시공간에 저장한다 8. 임시 공간의 값을 함수의 결과로 리턴시켜준다 이때 굳이 result라는 변수에 임시값을 할당하고 다시 리턴시켜줄 필요 없이 바로 임시값을 리턴시켜주면..

iOS/Swift

[Swift] 일급객체란?

swift는 함수형 프로그래밍 패러다임을 차용했다. 함수형 프로그래밍의 가장 큰 특징은 함수를 일급 객체(first-class object)로 다룬다는 점이다 자바스크립트를 공부하면서도 나왔었던 개념이라 익숙하지만 그래도 정확히 알지는 못하기에 정리해봤다 정의 일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. 출처. 위키백과 일급 객체가 되기 위한 조건 전달 인자로 전달할 수 있다 동적 프로퍼티 할당이 가능하다 변수나 데이터 구조 안에 담을 수 있다 반환 값으로 사용할 수 있다 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다

iOS/Swift

[Swift] Optional(옵셔널)도 결국 Enum type(열거형 타입)이다

옵셔널 정의 A type that represents either a wrapped value or nil, the absence of a value. 래핑 된 값 또는 값이 없는 nil을 나타내는 타입입니다. 왜 옵셔널 타입을 사용해야 하나 옵셔널로 선언된 변수는 초기화가 수행되지 않으면 nil로 자동 초기화 되기 때문에 런타임 에러를 방지할 수 있기 때문이다. 옵셔널 구조 enum Optional { case none // nil case some(Wrapped) // optional value } var name: String? // var name: Optional = .none var name: String? = "Terry" // var name: Optional = some("Terry") ..

iOS/Swift

[Swift] 열거형 케이스 패턴에서 let 위치 차이점

enum MainDish{ case pasta(taste: String) case pizza(dough: String, topping: String) case chicken(withSauce: Bool) case rice } var breakfast: MainDish = .pizza(dough: "thin", topping: "meat") 튜플 안에서 let키워드 사용 사용하려는 모든 연관값에 let키워드를 붙여줘야 함 if case .pizza(let dough, let topping) = breakfast{ print("Yes! \(dough) and \(topping)") } // Yes! thin and meat 사용하려먼 연관값에 let키워드를 안붙여줬을때 에러 발생 if case .pizza(..

iOS/Swift

[Swift] 프로퍼티(저장, 연산, 타입, 감시자)

용어 정리 저장 프로퍼티 : 인스턴스의 변수 또는 상수 ( 클래스 , 구조체 ) 연산 프로퍼티(get, set) : 값을 저장한 것이 아니라 특정 연산을 실행한 결괏값 ( 클래스, 구조체, 열거형 ) 타입 프로퍼티 : 클래스 변수 프로퍼티 감시자 : 프로퍼티의 값이 변할 때 값의 변화에 따른 특정 작업을 수행함 저장 프로퍼티 구조체는 기본적으로 저장 프로퍼티를 매개변수로 갖는 이니셜라이저가 있음 클래스는 저장 프로퍼티의 초깃값을 지정해주지 않으면 사용자 정의 이니셜라이저를 정의해줘야 함 struct CoordinatePoint{ var x: Int // 초깃값을 지정해 줄 수도 있음 var y: Int } var myPoint: CoordinatePoint = CoordinatePoint(x: 10, y..

iOS/Swift

[Swift] 프로퍼티 접근자와 감시자는 동시에 재정의 할 수 없다

class Person2{ var name: String = "" var age: Int = 0{ didSet{ print("Person2 age: \(self.age)") } } var koreanAge: Int{ return self.age + 1 } var fullName: String{ get{ return self.name } set{ self.name = newValue } } } class Student2: Person2{ var grade: String = "F" override var age: Int{ didSet{ print("Student2 age : \(self.age)") } } override var koreanAge: Int{ get{ return super.koreanAge ..

iOS/Swift

[Swift] enum(열거형)

enum을 사용하는 이유 enum은 배열이나 딕셔너리와 다르게 정의해준 항목 값 외에는 추가/수정이 불가하기 때문에 다음과 같은 경우 사용 가능 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 기본 enum 선언 enum School{ case primary case elementary case middle } enum School{ case primary, elementary, middle } 원시 값을 가지는 enum enum School: String{ case primay = "유치원" case elementary = "초등학교" } enum School: String{ case primary = "유치원", elementary = "초등..

테리펀트
'iOS/Swift' 카테고리의 글 목록 (2 Page)