Dart2024. 3. 11. 18:21Dart - Class

Named Constructors Parameter class를 정의할 때에는 타입명시 해줘야한다. class 내의 메서드에서 이름이 겹치지 않는 이상 this를 사용하는 것은 권장되지 않음. 상속은 extends로 생성자는 class의 이름과 똑같은 키워드로 만든다 class Player { final String name; int xp; // 1번 Player(this.name, this.xp); // 2번 Player(String name, int xp) { this.name = name this.xp = xp } void sayHello() { print('my name is $name, xp is $xp'); } } 기본적으로 기본값을 주지 않고 인스턴스 생성시에 값을 받으려면 required를..

카테고리 없음2024. 3. 11. 18:19Dart - Function

Function 괄호 생략 가능(생략하면 ⇒ 로 표시) 한 줄이면 return 생략가능 void sayHello(String name, int age) { print('Hello $name($age)'); } String sayHi(String name) => "Hi $name"; Named parameter 호출할 때 파라미터의 이름을 보여주게 하고 싶다면 파라미터를 {} 로 감싼다. {}로 감싸게 된다면 dafault 값을 설정해줘야 한다. 왜냐하면 null 이 들어오면 안되기 때문. 만약 dafault 값을 주지않고 무조건 파라미터를 입력받아야 한다면 required키워드를 사용한다. Optional Positional Parameter [] 대괄호로 파라미터를 감싸서 사용자에게 선택권을 줄 수 있..

Dart2024. 3. 11. 18:16Dart - Data type

Dart에서는 여러가지 데이터 타입이 있는데요. 특이하게 String 타입만 앞에 대문자를 사용하더라구요. 저는 Swift를 알고있어서 Dart를 공부하면서 특이했던 부분만 기록하려 합니다. Dart는 모든 타입이 object 이다. (Swift와는 다르게 모든 데이터 타입이 class 이더라구요.) String bool int double num: int일수도 있고 double일 수도 있다. (num 안에 int, double 이 포함) list collection if 지원한다. var giveMeSix = true; List number = [ 0, 1, 2, 3, 4, if(giveMeSix) 6, ]; collection for 지원한다. var oldFriends = ['nico', 'zhil..

Dart2024. 3. 11. 18:09Dart - Variable

Dart를 보면 Swift와 많이 비슷한 것 같습니다. 타입추론이나, Swift의 옵셔널 등 많이 비슷해서 금방 익힐 수 있는 것 같네요! Var keyword 변수를 만들 때에는 타입을 명시해주는 방법과 var로 선언해주는 두가지 방법이 있다. // 1. 타입추론 var name = 'zhilly'; // 2. 타입명시 String name = 'zhilly'; 관습적으로 함수나 메서드 내부에 지역변수를 선언할 때에는 var class에서 변수는 프로퍼티를 선언할 때에는 타입명시 Dynamic Type dynamic은 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드 추천되진 않지만 때때로 유용하다. var name; //or dynamic name; name = 'zhilly'; name = 12; ..

Dart2024. 3. 5. 16:34Why Dart?

Dart 특징 - 구글이 만든 언어이다. - 객체지향언어이다. 모든 것을 오브젝트로 취급한다. - Null Safety하다. Dart는 두개의 컴파일러를 사용합니다. - Dart Web: Dart로 작성된 코드를 javascript로 변환해줍니다. - Dart Native: Dart로 작성된 코드를 여러가지 CPU가 사용하는 기계어로 변환해줍니다. 그럼 Flutter에서 왜 Dart를 사용할까? 모바일 화면에서는 빠른 개발이 중요하다. 바뀐 코드를 화면으로 빠르게 확인할 수 있어야 한다. Dart를 사용하면 DartVM 을 통해 컴파일을 하지 않아도 빠르게 확인할 수 있다. 왜 컴파일이 오래걸리냐면 AOT(Ahead of Time 컴파일러)를 사용하게 되면 아키텍쳐의 맞게 최적화를 진행하기 때문에 컴파일..

Swift2024. 1. 22. 16:28Swift - 컴플리션 핸들러를 async로 감싸기

서론. Swift로 코드를 작성하다보면 completion handler를 사용하는 기본 메서드들이 많이 있습니다. 예를 들면, URLSession의 `dataTask`메서드인데요. // URLSession을 사용하여 데이터 다운로드 func downloadData(from url: URL, completion: @escaping (Data?, Error?) -> Void) { let task = URLSession.shared.dataTask(with: url) { (data, response, error) in // 네트워크 작업이 완료되면 클로저 호출 DispatchQueue.main.async { completion(data, error) } } task.resume() } // 사용 예시 if ..

RxSwift와 Input Output을 활용한 MVVM 구현
Architecture2024. 1. 3. 17:31RxSwift와 Input Output을 활용한 MVVM 구현

서론 최근 TCA나 ReactorKit을 살펴 보다보다가 input output을 활용한 MVVM구현에 대한 포스팅을 보게 되었습니다. 기존에 MVVM을 구현할 때는 표준이나 정해진 약속이 없어 구현하는 사람에 따라 다양한 방식으로 구현 되는데요. `input output`패턴을 활용하여 구현하면 조금더 데이터의 흐름을 파악하기 쉽고 뷰와 뷰모델이 주고 받는 것을 명확하게 표현할 수 있다는 장점이 있습니다. 물론 Rx 같은 비동기 프로그래밍에 대한 사전지식이 필수라는 단점이 있지만 그만큼 더 깔끔한 프로그래밍 할 수 있는 것 같습니다. 그래서 오늘은 실제로 공부하고 간단하게 테이블 뷰가 있는 뷰컨트롤러에 적용해보려고 합니다. 그래서 어떻게 구현? protocol ViewModel 제일 중요한 키워드는 i..

iOS - 코드로 UI 구현하는 방법
iOS2023. 12. 29. 14:51iOS - 코드로 UI 구현하는 방법

전편 - 프로젝트에서 Main Storyboard 삭제하기와 이어집니다! 전편에서 메인스토리보드를 없애고 앱이 실행되면 바로 ViewController가 화면에 띄워지도록 세팅을 해줬었는데요. 이번편에는 삭제해버린 스토리보드 없이 코드로 UI를 구성해보는 방법을 설명해보고자 합니다. 미리보기 가운데에 imageView 하나와 바로 아래에 간단한 버튼으로 구성되어 있는 화면입니다. 1. UI 친구들 선언해주기 // ViewController.swift import UIKit class ViewController: UIViewController { let imageView: UIImageView = { let imageView = UIImageView() imageView.image = UIImage(sys..

image