본문 바로가기

Swift

(132)
[Swift]JSON 제이슨 ? 재순이 ? 너는 뭐하는 친구니 ? JSON이란 무엇인가 ? 영어 닉네임같다. ㅎ Javascript Object Notation의 줄인말이며 타입은 Data이다. JSON이 만들어진 목적은 변환기 같은역할로 사람에게도 보기좋고 컴퓨터에게도 보기좋게끔 변환하는 일종의 약속이다. 현재 내 컴퓨터 시스템내에있는 객체를 다른 컴퓨터에 사용하려고 할때 바로 전송을 할 수 가 없다. 왜 ? 컴퓨터마다 데이터저장방식 ?이 다르기때문이다. 어떻게 ???? => 다른컴퓨터 사이에서도 0과1을 바꾸고 하는 규칙이 있어야 옮길 수 있는데 이때 필요개발된 문법이 JSON이다. 자료형과 문법 수(Number) 문자열(String): 0개 이상의 유니코드 문자들의 연속. 문자열은 큰 따옴표(")로 구분하며 역슬래시 이스케이프 문법을 지원한다. 참/거짓(Boole..
스위프트 코드 스타터 캠프 – 2021 [1기] 후기[2021.08.02 ~ 2021.09.03] 약 한달간의 야곰아카데미 스타터캠프가 끝나버렸다.. ㅠㅠ 이제 질문의 두려움의 벽을 허물고 불이 붙으려고 하는데 끝나버리니 너무 아쉽다..(흐엉) 야곰아카데미캠프는 안드로이드 개발자로 앞길을 닦고있는 형의 추천으로 알게되었다. 스위프트 언어와 IOS를 중점으로 교육하고 유튜브도 꽤나 친절하고 상냥하신 말투로 설명하시는게 인상깊어 신청하게되었다. 결론부터 말하면 나에게 정말 필요한부분 부족한부분을 채워주는 유익한 시간이었다. 야곰아카데미 스타터캠프의 공부방식은) 기본적으로 학습자료가 주어지고 공부한 문법을 스스로 코딩해보고 궁금한점에대해서 질문할 수있으며 중요하다 싶은 문법? 주제에대해서 토론도 하고 배운 문법으로 과제를 하며 피드백까지 받고 마지막으로 오늘 하루는 어땠는지 즐거웠던점 힘들었던점에대해서 회..
[Swift]프로퍼티(Properties) 기능들 좀 알아보자! 정확하지 않은 정보가 있을 수 있습니다. 프로퍼티(properties) 개념정의로는 속성을 말함, 즉 타입 내에있는 값을 저장 하는 변수나 상수를 일컷는말 프로퍼티는 클래스,구조체, 열거형과 관련한 값이다. [프로퍼티의 종류는 두가지] - 저장 프로퍼티(값이 존재) ex)var name: String = "gildong" - 계산된 프로퍼티(값이 없음) ex)var name: String - 저장프로퍼티 - 구조체, 클래스 - 계산된 프로퍼티 - 열거형, 구조체, 클래스 # 추가로 프로퍼티 옵저버를 정의해서 값이 변할 때마다 모니터링을 할 수 있다. # 구조체는 let상수로 선언된 프로퍼티값을 변경할 수 없지만 구조체는 참조타입이기때문에 가능! 지연 저장 프로퍼티 (Lazy Strored Properti..
[Swift]열거형의함정 열거형 타입과 그 속에 case의 프로퍼티타입과는 별개의 타입이라는 것이다. 이니셜라이저에 kaiHouse: KauiHouse타입으로 지정한다고가정하면 인스턴스변수로 KauiHouse를 호출할때 rawvalue값을 출력할 수 없다 왜냐면 KauiHouse와 String은 다른타입이기때문이다. 고로 rawvalue값을 출력하고 싶으면 이니셜라이저에 String값으로 지정을 해놓으면 된다. enum Staff: String{ // 직원 case kiosk, manager, part_time } enum SingleBurger: String{// 싱글 버거 case cheeseBurger, bigMac, bulgogiBurger, baconTomatoBurger, surimpBurger, mcChicken, ..
[Swift] 클래스(class)와 구조체(struct) 둘 중에 뭐가 더 좋은데 ? 어 !? 시간은 소중하니 바로 알아보도록 하자 뭐가더 좋은지를 알아보기전에 간단히 공통점과 클래스, 구조 그들만의 특정을 짚고 넘어가려고 한다. 클래스와 구조체의 공통점 값을 저장하기위한 프로퍼티 정의 기능을 제공하기 위한 메서드 정의 subscript문법을 이용해 특정 값을 접근 초기 상태를 설정할 수 있는 initializer정의 기본 구현에서 기능확장 프로포콜 순응(conform) 더 많은 정보는 프로퍼티,메소드,서브스크립트, 초기화, 확장 그리고 프로토콜을 참조하면된다. 구조체만의 특징 프로퍼티에 대한 이니셜라이저가 자동생성된다(굳이 적지않아도됨) 클래스와 달리 상속할 수가 없다. 인스턴스를 let으로 설정하면 프로퍼티 값을 변경할 수 없다. (ps.- 스위프트의 기본 데이터 타입은 모두) 구조체 사용이 ..
[Swift]I'm on the Access Level !~(접근수준) I’m on the Access,, Level~ 제껴라 제껴라 제껴라~ 근데 제끼면안됨 아주아주 중요하거덩 바로 알아보자 Access Level ( 접근수준 ) 접근 수준이 존재하는 이유 : 변수 메서드 타입 등을 외,내 부 모듈에서도 접근하여 사용하기 위함 접근 수준을 이해하려면 모듈과 소스파일을 이해해야한다 이론상으로 모듈은 코드를 배포하는 단일 단위로 프레임워크, 어플리케이션, 라이브러리 등이라고 부르고 소스파일은 모듈안에서 생성되는 file을 의미한다. 쉽게 이해하기위해서 xcode를 만들어 Project를 생성하여 그안에 소스파일등을 만들어 그안에 코딩을 할것이다 이때 Project파일을 모듈이라하고 file이 소스파일이다 참고로 다른 모듈에서 내가만든 모듈을 사용하고자할땐 import라는 기능..
[Swift]이넘!!!! Enumeration 에 대해서 알아보자! Enumeration? 열거형은 관련된 값으로 이루어진 그룹을 공통의 형으로 선언해 형 안전성을 보장하는 방법으로 코드를 다룰 수 있게 해줍니다. enumeration 구현 가능 타입 [Swift는 case값이 string, character, integer, flowing 값들을 사용할 수 있습니다.] 열거형은 1급 클래스형이어서 계산된 프로퍼티를 제공하거나 초기화를 지정하거나, 초기선언을 확장해 사용할 수 있음 [enum으로 switch문을 이용시 유의사항] 다만 case의 값을 모두 포함해서 사용해야하며 그렇지않을 경우 컴파일 오류가 납니다. 하지만 만약에 열거형의 모든 cases의 처리를 기술하는게 적당하지않다면 기분(default) case를 제공함으로써 처리되지않는 case를 피할 수 있습니다..
[Swift]옵셔널(Optional) 그게뭔데 ? 옵셔널이란 ? 스위프트 언어를 보다 안정적으로 사용할 수 있게하기 위함이며 Optional , 선택적인 뜻으로 값이 있으면 추출하고 없으면 nil을 반환하는 것 변수 또는 상수에 값이 있을 수도있고 없을 수도 있는 암시적 표현이다. #선언은 두 가지 방법이 있다 Var optionalName: String? = “Value” // 읽기 편함 Var optionalName: Optional = “Value” // FM 옵셔널의 특징 값 교류나 연산을 할 수 없다. 왜냐하면 옵셔널값은 별개의. 타입이기 때문에 Int값과 연산이 어려움 옵셔널 체이팅 사용할 수 있는 값에는 프로퍼티, 메소드 그리고 서브스크립트가 포함 됩니다. (옵셔널 체이팅에대해서는 다음에 다룰예정입니다.) 옵셔널의 default값은 nil이..
[Swift]ARC(Automatic Reference Counting) 이게 뭔데 ? Swift 에서는 앱의 메모리를 사용을 관리하기 위해 ARC(Automatic Reference Counting)을 사용합니다. 존재 이유 : 메모리를 효율적으로 관리해주는 역할로써 참조되지않는 클래스 인스턴스를 메모리에서 해제함. 자동으로 참조횟수를 추적하여 관리함 더 이상 사용하지 않는 인스턴스를 메모리에서 해지함 하지만 몇몇의 경우 ARC메모리 관리를 위해 코드의 특정부분에 대한 관계에 대한 정보를 필요로 함( 참조 횟수 - class의 인스턴스에만 적용됨, 열거, 구조는 값타입임으로 해당사항이아님 ) ARC의 동작은 ?? - 클래스의 새 인스턴스를 만들때마다 ARC가 인스턴스 정보를 담는데 필요한 적정크기의 메모리를 할당함. 이 메모리는 그 인스턴스에 대한 정보와 관련된 저장 프로퍼티 값도 갖고 ..
컴파일오류, 런타임오류, 링크타임오류 그게 뭔데 ? 1. 컴파일 타임 오류(Compile-time-Error) 위 과정 순서 중에서 첫 번째 과정(소스코드 컴파일)에서 발생하는 오류는 컴파일타임 오류라고 합니다. 이 오류는 대개 소스코드 자체의 문법적오류(syntax error)로 인하여 발생합니다. 또한 이 오류는 핸들링(handling)이 불가능합니다. 프로그램으로서 실행조차 되기 전에 오류가 발생했기때문에 핸들링이 불가하기에 코드를 수정해야 합니다. 2. 링크 타임 오류(Link-time-Error) 두 번째 과정(연계 편집)에서 발생하는 오류는 링크타임 오류하고 한다. 컴파일타임 오류와 마찬가지로 프로그램 실행 전에 발생한 오류의 하나이며 사실 이 오류는 그리 중요하게 여기지 않는 편이다. 이 오류는 주로 필요한 리소스(Resource: 그림, 문..