일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- consumer
- Firebase
- permission
- Swift
- Snapshot
- enum
- platformexception
- changenotifier
- borderRadius
- 문법
- transform
- datetime
- Navigator
- multiprovider
- divider
- runTransaction
- user
- controller
- provider
- Stream
- setstate
- ListView.builder
- reference
- switch
- snackbar
- signout
- swift 문법
- Camera
- changenotifierprovider
- globalkey
- Today
- Total
목록전체 글 (130)
코딩하는 제리
class Man { var age: Int = 1 var weight: Double = 3.5 func display() { print("\(age), \(weight)") } init(age: Int, weight: Double) { self.age = age self.weight = weight } } class Student: Man { // 비어있지만 Man의 모든 것을 가지고 있음. } var people: Man = Man(age: 10, weight: 20.5) people.display() // 비어있는 Student 클래스 객체 생성 var jerry: Student = Student(age: 20, weight: 60.0) jerry.display()// 부모 클래스의 메서드 prin..
- 매개변수의 개수와 자료형이 다른 같은 이름의 함수를 여러 개 정의 - 매개변수가 다른 두 생성자를 통해 두가지 방법으로 인스턴스를 만들 수 있음 class Man { var age: Int = 1 var weight: Double = 3.5 // 첫번째 생성자 init(age: Int, weight: Double) { self.age = age self.weight = weight } // 두번째 생성자 init(age: Int) { self.age = age } } var people: Man = Man(age: 10, weight: 20.5) // 첫번째 생성자 var people: Man = Man(age: 10) // 두번째 생성자
- 클래스 레벨에서 동작함. - 클래스의 새로운 인스턴스를 생성하는 것과 같은 동작. - 타입 메서드는 인스턴스 메서드와 동일한 방법으로 선언하지만 class나 static 키워드를 앞에 붙여서 선언. - class 키워드로 만든 클래스 메서드는 자식 클래스에서 override 가능. class Man { var age: Int = 1 var weight: Double = 3.5 // 인스턴스 메서드 func display() { print("\(age), \(weight)") } // 타입 메서드 class func cM() { print("class 메서드") } static func scM() { print("static 메서드") } } // 일반적 호출 및 사용 var people: Man = ..
- 기본값은 call by value, 값만 복사. - call by reference는 데이터의 메모리 주소값을 전달. - 함수 인자로 전달받은 값을 수정할 경우 실제 변수의 값을 변경. - 매개변수 타입 앞에 inout 키워드와 인자로 넘겨줄 변수명 앞에 & 키워드를 사용. var myValue = 10 func changeRealValue(num: Int) -> Int { num = 20 // 에러 발생 return(num) } print(doubleValue(value: myValue) ··· var myValue = 10 func changeRealValue(num: inout Int) -> Int { num = 20 // OK, myValue 변수의 값도 20으로 변경 됨. return(num..
- 표현식이 거짓으로 판단될 경우 수행될 else 절을 반드시 포함. - else 절에 속한 코드는 현재의 코드 흐름을 빠져 나갈 수 있는 구문(return, break, continue, throw)을 반드시 포함해야함. - 또는 다른 함수를 else 코드 블록 안에서 호출할 수도 있음. - 특정 조건에 맞지 않을 경우 현재의 함수나 반복문에서 빠져 나갈 수 있도록 '조기 출구' 개념 guard else { // 표현식이 거짓일 경우 실행될 코드 } // 표현식이 참일 경우에 실행될 코드 - guard문은 값을 언래핑 하기 위해서 옵셔널 바인딩을 사용, 그 값이 10보다 작은지 검사 - 변수를 언래핑 할 수 없거나 그 값이 10보다 크면, else 절이 실행되어 에러 메시지 출력, 이 함수에서 빠져 나..
// 타입 검사 // is 키워드를 이용해 값의 타입을 검사 // 지정된 객체가 MyClass 클래스의 인스턴스인지 검사 if myObject is MyClass { // myObject는 MyClass의 인스턴스이다. } // 범위 연산자 // ...10// 10 이하 // 10...// 10 이상 // 1...10// 1 부터 10 까지 // 1.. optional(black)이 아님
// 상속 관계가 있는 클래스들끼리만 타입 캐스팅 가능. // upcasting (자식 as 부모) // 자식이 부모로부터 상속받아 더 많은 것을 가지고 있으면 부모로 캐스팅하는 것은 문제 없음. // as 연산자를 이용한 타입 변환(type casting) // - 자식인스턴스 as 부모클래스 (upcasting (안전한 캐스팅). 자식이 추상화 됨. // - 업캐스팅은 객체를 부모 클래스의 객체로 형변환. // - 형변환은 성공할 것이기 때문에 보장된 변환. // 자식인스턴스인 myButton을 부모 클래스형으로 형변환. let myButton: UIButton = UIButton() let myControl = myButton as UIControl // 자식인스턴스 as 부모 클래스. // dow..
// 값을 반환할 때 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환. // Int("100")은 100이 아닌 Optional(100)을 리턴함. // Int("Hi")는 정수 값을 반환할 수 없음. 아무런 값도 반환할 수 없다(nil 반환). // nil 값을 저장하려면 Optional 타입으로 선언해야함. // 변수 또는 상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위함.(null-safety와 비슷?) // 옵셔널 타입 변수를 선언하기 위해서는 타입 선언부 뒤에 "?" 문자를 씀. // 정수값을 갖거나 nil을 가질 수 있음. var index: Int? // nil 값을 옵셔널이 아닌 변수나 상수에 할당할 수 없음 var myInt = nil // error..