전체 글

1. 익명 함수와 람다 함수익명함수와 람다함수는 둘 다 이름이 없음. 일회성으로 사용된다는 공통점이 있음.통상적으로 많은 언어에서 익명 함수와 람다함수를 구분하지만, Dart언어에서는 구분하지 않음. 익명 함수와 람다 함수의 표현 방식익명 함수람다 함수(매개변수) { 함수 바디}(매개변수) => 단 하나의 스테이트먼트익명 함수에서 { }를 빼고 `=>` 기호를 추가한 것이 람다 함수임! 매개변수는 아예 없거나 하나 이상이어도 됨.익명 함수와 달리 코드 블럭을 묶는 { }가 없는 람다는 함수 로직을 수행하는 Statement가 하나여야만 함.(한 줄이 아닌 명령 단위가 하나!)람다 함수는 이름을 정하고 미리 선언할 필요가 없어서 글로벌 스코프로 다룰 필요가 없음.더 나아가 하나의 Statement만 다..

1. 함수의 일반적인 특징함수를 사용하면 한 번만 작성하고 여러 곳에서 재활용을 할 수 있음! 반환할 값이 없을 경우에는 `void` 키워드를 사용함.int addTwoNumbers(int a, int b) { return a + b;}void main() { print(addTwoNumbers(1, 2));}/* 출력값3*/다트 함수에서 매개변수를 지정하는 방법순서가 고정된 매개변수(포지셔널 파라미터)입력된 순서대로 매개변수에 값이 지정됨. 예를 들어 `int a`가 `int b`보다 먼저 선언 됐기 때문에 함수를 실행할 때도 1, 2 순서대로 a와 b에 입력이 됨.이름이 있는 매개변수(네임드 파라미터)순서와 관계없이 지정하고 싶은 매개변수의 이름을 이용해 값을 입력할 수 있음. 키와 값 형태로 매..

1. 제어문if문, switch문, for문, while문이 있음. 1.1 if문if문은 원하는 조건을 기준으로 다른 코드를 실행하고 싶을 때 사용함. if문, if else문, else문의 순서대로 괄호 안에 작성한 조건이 true면 해당 조건의 코드 블록이 실행됨.void main() { int number = 2; if (number % 3 == 0) { print("3의 배수입니다."); } else if (number % 3 == 1) { print("나머지가 1입니다."); } else { // 조건에 맞지 않는다면 다음 코드 실행 print("맞는 조건이 없습니다."); }}/* 출력값맞는 조건이 없습니다.*/1.2 switch문입력된 상수값에 따라 알맞은 ..

1. 연산자연산자로는 수치 연산자, null값 입력 관련 연산자, 값 비교 연산자, 타입 비교 연산자, 논리 연산자가 있음. 1.1 기본 수치 연산자Dart언어에서는 일반적으로 다른 언어에서도 사용하는 기본 산수 기능을 제공해줌void main() { double number = 2; print(number + 2); print(number - 2); print(number * 2); print(number / 2); 나눈 몫 print(number % 3); 나눈 나머지 // 단항 연산도 가능// number++; // 3// number--; // 2// number += 2; // 4// number -= 2; // 0// number *= 2; // 4// nu..

컬렉션컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입임. 여러 값을 순서대로 저장하거나(List), 특정 키값을 기반으로 빠르게 값을 검색해야 하거나(Map), 중복된 데이터를 제거할 때(Set) 사용 됨.컬렉션 타입은 서로의 타입으로 자유롭게 형변환이 가능하다는 장점이 있음. 1. List 타입리스트 타입은 여러 값을 순서대로 나열한 변수에 저장할 때 사용됨. 리스트의 구성 단위를 원소라고 함.리스트명[인덱스] 형식으로 특정 원소에 접근할 수 있음. 인덱스는 원소의 순번이라고 생각하면 됨. 제일 첫 원소는 0으로 지정함.void main() { // 리스트에 넣을 타입을 사이에 명시할 수 있음. List blackPinkList = ['리사', '지수', '제니', '로제']; pri..

문제 핵심 요약각 문자를 n번 반복해서 새로운 문자열을 만드는 문제.1. 문자 단위로 변환하기문자열을 문자(Character) 단위로 처리하면 반복하기 쉬움.->Swift에서 문자열을 배열처럼 다룰 수 있음 → "hello"를 ["h", "e", "l", "l", "o"] 형태로 변환 가능.2. 문자 반복하기각 문자를 n번 반복해야 함.-> String(repeating:count:)를 활용하면 "h" → "hhh" 이런 식으로 변환 가능.3. 모든 문자를 변환한 후 합치기각 문자 변환 후 다시 하나의 문자열로 합쳐야 함.-> map으로 변환하고 joined()로 합치면 해결 가능함 func solution(_ my_string: String, _ n: Int) -> String { return m..

1.1 메인함수다트는 프로그램 시작점인 엔트리 함수 기호로 `main()`을 사용함.void main() {}중괄호 사이에 원하는 코드를 입력하면 됨. void는 아무 값도 반환하지 않는다는 뜻임.main뒤에 () 안에 입력받을 매개변수를 지정할 수 있음. 비어있으면 아무런 매개변수도 받지 않는다는 뜻! 1.2 print() 함수print() 함수는 문자열을 콘솔에 출력하는 함수void main() { // 콘솔에 출력 print('hello world');} 1.3 var를 사용한 변수 선언void main() { var name = '이도서'; print(name);}// 출력값// 이도서 void main() { var name = '이도서'; print(name); name = '..

1. iOS 메모리 구조iOS에서 앱이 실행되면 메모리는 4가지 영역으로 나뉨메모리 영역하는 일예시Stack (스택)지역 변수 저장(자동 관리됨)함수 안에서 만든 변수 (`let`, `var`)Heap (힙)동적으로 할당되는 데이터 저장`class`인스턴스, `UIImage`등Date (데이터)전역 변수, static변수 저장`static var count = 0`Code (코드)실행할 코드 저장컴파일된 앱 코드 예제class Person { var name: String // Heap 영역에 저장됨 (동적 할당됨) init(name: String) { self.name = name }}func sayHello() { let greeting = "Hello" // S..


우선 ARC를 공부하기 전에 메모리 구조를 알아야함. 처음 공부하는건데 와. 신난다. 후...1. 메모리 구조먼저 프로그램이 실행이 되면 OS는 메모리(RAM)에 이 프로그램을 위한 공간을 할당함그 공간은 코드, 데이터, 힙, 스택으로 나누어서 사용함1-1 코드 영역우리가 작성한 소스 코드가 기계어 형태로 저장됨 (기계어 : 0과 1)컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장됨. 즉,코드 자체가 올라가는 영역앱의 기계어 코드(컴파일 결과물), 상수 문자열 같은 것들이 이곳에 저장됨수정이 불가능한 읽기 전용 메모리1-2 데이터 영역전역변수, static 변수가 저장됨프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 해제됨실행 중에 변수 값이 변경될..