📊 분류 전체보기 277

[Dart] Factory Constructor

Factory Constructor Factory Constructor 는 특이하게도 메서드처럼 바디가 있음 무조건 현재 클래스의 인스턴스를 반환해줘야 함 void main(){ final parent = Parent(id: 1); print(parent.id); final child = Child(id: 3); print(child.id); } class Parent { final int id; Parent({ required this.id, }); factory Parent(int id) { return Parent(id: id); // error } } class Child extends Parent { Child({ required super.id, }); } 하지만 에러가 나는 것을 볼 수 있다..

🐦 Flutter 2022.12.11

[Dart] 슈퍼 이니셜라이저

Dart 2.17 부터 새로운 단축 구문을 사용하여 생성자 매개변수를 슈퍼클래스에 전달할 수 있습니다. 참고로 이전 구문은 다음과 같습니다. class Person { Person(this.name); final String name; } // Old way: before Dart 2.17 class Employee extends Person { Employee(String name, this.salary) : super(name); final int salary; } 즉 부모 생성자에 인수를 전달하기 위해 super 를 명시적으로 호출해야 했습니다. Dart 2.17 부터 다음과 같이 할 수 있습니다. // New way: Dart 2.17 and above class Employee extends P..

🐦 Flutter 2022.12.11

안드로이드 Manifest 파일

뜻(Meaning) 명사 - 적하목록(선박 또는 항공기에 적재된 화물의 목록) 형용사 - 명백한 동사 - 나타나다 안드로이드에서 매니페스트란 "안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록" 이라고 정의할 수 있습니다. 역할(Role) - Java 패키지의 이름을 지정할 수 있다. 패키지지 이름은 곧 프로젝트의 식별자! 사람으로 따지면 주민등록번호 또는 바꿀 수 없는 이름과 같다. - 후에 알게될 액티비티, 서비스, 브로드캐스트, 리시버 등 앱을 이루는 구성요소들의 클래스 이름을 지정하고 구성요소들이 실행될 수 있는 조건을 기술한다. - 앱이 장치 또는 구성요소들과 상호작용하기 위해 필요한 권한을 설정한다. - 앱이 연결되어야 하는 라이브러리를..

👩🏻‍💻 TIL 2022.12.05

앱이 도중 꺼지는 이유에 대해 분석해보았다

제목 그대로 어느 날, QA 를 하시는 한 분이 내가 만든 기능의 리뷰를 작성하던 도중 앱이 꺼지는 것 같다고 하셨다. 이전 QA 에서 앱이 꺼졌다고 보고한 사람들이 없었는데 왜 갑자기 이런 현상이 일어난 걸까? 또한 내가 쓴 코드에 대해선 여러 번 체크를 해봤기 때문에 코드에선 100% 아무런 잘못이 없다고 나는 확신을 하고 있었다. QA 를 하시는 분이 쓰는 핸드폰은 갤럭시이며 회사의 공용 테스트폰 iphone 7 로 테스트를 하고 있었다. 내가 테스트하는 폰들은 이런 현상이 일어나지 않았기에 QA 분에게 테스트폰을 잠시 빌려서 디버깅을 해보겠다고 부탁하였다. 그런데 테스트폰을 본 순간 문득 예전 기억이 떠올랐다. 옆에 개발하시는 분이 이 폰으로 디버깅하는데 속도가 너무 느리다고 하셨다. 그래서 나는..

👩🏻‍💻 TIL 2022.12.02

[Swift] 인스턴스의 생성과 소멸

인스턴스의 생성과 소멸 이니셜라이저와 디이니셜라이저 init, deinit 스위프트의 모든 인스턴스는 초기화와 동시에 모든 프로퍼티에 유효한 값이 할당되어 있어야 한다. 프로퍼티에 미리 기본값을 할당해두면 인스턴스가 생성됨과 동시에 초기값을 지니게 된다. class PersonA { // 모든 저장 프로퍼티에 기본값 할당해야 함! var name: String = "unknown" // var name: String // 이렇게 쓰면 error -> 기본값 없음 var age: Int = 0 var nickname: String = "nick" } let jason: PersonA = PersonA() // 인스턴스 생성될 때 모든 저장 프로퍼티에 기본값 할당됨 jason.name..

🦜 Swift 2022.11.20

[Swift] 상속

상속 스위프트의 상속은 클래스, 프로토콜 등에서 가능하다 열거형, 구조체는 상속이 불가능하다 스위프트는 다중상속을 지원하지 않다 이번 파트에서는 클래스의 상속에 대해서 알아보자 class 이름: 상속받을 클래스 이름 { 구현부 } class Person { var name: String = "" func selfIntroduce() { print("저는 \(name)입니다") } // final 키워드를 사용하여 재정의를 방지할 수 있습니다 // 즉 자식 클래스에서 상속 받았을때 override 방지 final func sayHello() { print("hello") } // 타입 메서드 // 재정의 불가 타입 메서드 - static // 자식 클래스에서 재정의 불가 static func typeMet..

🦜 Swift 2022.11.20

[Swift] 프로퍼티 감시자

// 프로퍼티 감시자 struct Money { // 프로퍼티 감시자 사용 var currencyRate: Double = 1100 { willSet(newRate) { print("환율이 \(currencyRate)에서 \(newRate)으로 변경될 예정입니다") } didSet(oldRate) { print("환율이 \(oldRate)에서 \(currencyRate)으로 변경되었습니다") } } // 프로퍼티 감시자 사용 var dollar: Double = 0 { // willSet의 암시적 매개변수 이름 newValue !!! willSet { print("\(dollar)달러에서 \(newValue)달러로 변경될 예정입니다") } // didSet의 암시적 매개변수 이름 oldValue didS..

🦜 Swift 2022.11.20

[Swift] 프로퍼티

struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String = "Swift" var koreanAge: Int = 0 // 인스턴스 연산 프로퍼티 var westernAge: Int { get { return koreanAge - 1 } set(inputValue) { koreanAge = inputValue + 1 } } // 타입 저장 프로퍼티 static var typeDescription: String = "학생" // 인스턴스 메서드 // func selfIntroduce() { // print("저는 \(self.class)반 \(name)입니다") // } // 읽기전용 인스턴스 연산 프로퍼티 var selfIntro..

🦜 Swift 2022.11.20

[Swift] 클로저

클로저 클로저 == 함수. 다만, 함수는 이름이 있는 클로저이다. { (매개변수 목록) -> 반환타입 in 실행코드 } Parameter 와 ReturnType 이 있는 클로저 let closure = { (name: String) -> String in return "Hello, \(name)" } name은 Argument Label이 아니고, 오직 Parameter Name. 클로저를 호출할 때는 함수와 다르게 Argument Label 을 사용하지 않는다. closure("jihyun") closure(name: "jihyun") //error! 또 다른 예시를 살펴보면 다음과 같다. // 클로저의 사용 var sum: (Int, Int) -> Int = { (a: Int, b: Int) -> I..

🦜 Swift 2022.11.20

[Swift] 열거형

enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day: Weekday = Weekday.mon day = .tue // day 가 Weekday 타입이므로 .tue 이런 식으로 축약해서 써줄 수도 있다. 다만 Weekday 타입이라고 명시해줬어야 함 switch 문을 이런 식으로 많이 쓴다. 그리고 Swift 의 enum 은 C 언어의 enum 처럼 정수값을 가질 수 있다. enum Fruit: Int { case apple = 0 case grape = 1 case peach } 자동으로 1씩 증가한다. 따라서 peach 는 2 단, case 별로 다른 정수 값을 가져야 한다. 이렇게 rawValue 로 값을 확인할 수 ..

🦜 Swift 2022.11.19