기본적인 ImageView의 사용을 훓어보려고 한다. 예제는 하나의 이미지 뷰에 2장의 사진을 switch로 변경 가능하고, "확대" 버튼을 누르면 사진의 크기가 2배 커지도록 동작하는 예제를 실습해보려고 한다. 바로 들어가보자. 우선, 스토리보드는 아래와 같이 구성한다. 각 엘리먼트를 swift 객체와 연결한 뒤에 아래와 같이 사진 크기를 조절할 확대 버튼 이벤트 메서드와 switch on, off 에 따른 이벤트 메서드를 추가하면 끝이다. // // ViewController.swift // example_project2 // // Created by choonham on 2022/12/12. // import UIKit class ViewController: UIViewController { var..
그 동안 swift 기반 ios App을 제작하기에 앞서 swift의 기본적인 문법을 다뤘다. 이제 길었던 문법 정리를 끝내고, 본격적으로 xCode에서 ios 앱을 직접 만들어보면서 공부할 시간이다! 언어를 처음 시작하면 Hello, World 부터 배우는 것처럼 마찬가지로 레이블 2개와 텍스트 필드, 버튼으로 구성된 간단한 어플, "Hello, Swift" 를 만들어보자. - 기본적인 xCode의 단축키나 프로젝트 생성 방법 등은 따로 다루지 않을 예정이다. 우선, example_project1 이라는 이름으로 프로젝트를 하나 생성하고, 스토리보드에 아래와 같이 library를 추가한다. (라이브러리 추가 단축키는 cmd + shift + L) 스토리보드 셋팅 후에 assistance 창 viewCo..
Swift 또한 다른 언어와 마찬가지로 여러 접근제어자를 제공하여 특정 코드의 접근을 다른 소스파일이나 모듈에서 제한할 수 있다. 접근 제어는 클래스, 구조체 , 열거형 등 개별 타입에도 적용할 수 있고, 그 타입에 속한 프로퍼티, 메서드, 생성자, 서브스크립트에도 적용할 수 있다. 바로 알아보도록 하자. Swift의 접근 제어는 모듈과 소스파일에 기반을 두고 있다. 모듈은 코드를 배포하는 단일 단위로 하나의 프레임워크나 앱이 이 단위로 배포되고 다른 모듈에서 Swift의 Import 키워드를 사용하여 import 될 수 있다. 1. 접근 레벨 Swift에서는 5개의 접근 레벨을 제공한다. 1) Open & Public: Open과 Public 접근자 모두 선언한 모듈이 아닌 다른 모듈에서 사용 가능하다..
제네릭은 Java에서 사용하는 제네릭의 개념과 매우 유사한 내용의 개념이다. 제네릭을 사용하면 좀 더 유연하고 재사용 가능한 함수와 타입의 코드를 작성하는 것을 가능하게 해준다. 1. 제네릭 함수 우선 제네릭 함수는 아래와 같이 를 사용한다. 아래는 inout 인자를 받아 참조되는 변수의 값을 바꾸는 swap 함수를 제네릭을 사용하여 구현한 것이다. func swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } swift는 실제 실행하는 타입 T가 어떤 타입인지 보지 않는다. swapTwoValues 함수가 실행되면 T에 해당하는 값을 함수에 넘긴다. var someInt = 3 var anotherInt..
익스텐션을 이용하면 클래스, 구조체, 열거형 혹은 프로토콜 타입에 기능을 추가할 수 있다. retroactive modeling으로 알려진 것과 같이 원본 코드를 몰라도 그 타입에 대한 기능을 확장할 수 있다. swift에서 익스텐션을 이용해 다음과 같은 일들을 할 수 있다. 1) 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티의 추가 2) 인스턴스 메서드와 타입 메서드의 추가 3) 새로운 이니셜라이저 제공 4) 서브스크립트의 정의 5) 중첩 타입의 선언과 사용 6) 특정 프로토콜을 따르는 타입을 만들기 1. 익스텐션 문법 익스텐션은 extension 키워드를 사용하여 선언한다. extension SomeType { // new functionality to add to SomeType goes here..
프로토콜은 특정 기능 수행에 필수적인 요소를 정의한 Blueprint의 개념이다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform)고 말한다. 프로토콜에 필수 구현을 추하가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장하는 것 또한 가능하다. Java의 인터페이스를 implements 하는 개념과 비슷하다고 생각할 수도 있겠다. 문법부터 차근차근 알아보자. 1. 프로토콜 문법 프로토콜의 정의는 클래스, 구조체, 열거형 등과 유사하다. protocol SomeProtocol { // protocol definition goes here } 프로토콜을 따르는 타입을 정의하기 위해서는 타입 이름 뒤에 콜론을 붙이고 Conforming 할 프로토콜 이름을 적는다. struct SomeStruct..
타입캐스팅은 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 다른 superClass나 subClass로 취급하는 방법이다. 타입캐스팅에는 is와 as 두 연산자를 사용한다. 바로 확인해보자. 1. 타입캐스팅을 위한 클래스 계층 구조 선언 타입캐스팅의 동작을 확인하기 위해 클래스를 하나 만들어보자. class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song:..
Swift 또한 런타임 에러를 처리하기 위한 에러의 throwing, chaching, propagating, manipulating 을 지원하는 일급 클래스를 제공한다. 바로 예제와 함께 알아보자. 1. 에러의 표시와 발생 Swift의 Enumdms 값으로 표현되는 에러를 그룹화하고 추가적인 정보를 제공하기에 적합하다. 예를 들어, 게임 안에서 판매기기 동작의 에러 상황을 다음과 같이 표현할 수 있다. enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinNeeded: Int) case outOfStock } 또한 위 에러를 발생시키려면 throw 구문을 사용하여 아래와 같이 insufficientFunds ..
옵셔널 체이닝은 nil일 수도 있는 프로퍼티나, 메서드 그리고 서브스크립트에 질의를 하는 과정을 말한다. 만약 옵셔널이 프로퍼티나 메소드 혹은 서브스크립트에 대한 값을 갖고 있다면, 그 값을 반환하고 값이 nil이면 nil을 반환한다. 이전에 처음 옵셔널이라는 개념을 공부하면서 슬쩍 접했던 내용이기는 하다. 그 문법과 활용을 자세히 알아보도록 하자. 1. 강제 언래핑의 대체로써의 옵셔널 체이닝 옵셔널 체이닝은 옵셔널 값 뒤에 물음표를 붙여 표현이 가능하다. 옵셔널 값을 강제 언래핑 하기 위해서는 뒤에 느낌표를 붙이는 것과 문법이 비슷하지만, 언래핑을 !로 했는데 만약 그 값이 nil 이라면 런타임 에러를 발생시키지만, 옵셔널 체이닝을 활용하면 런타임 에러 대신 nil이 반환 된다는 것이다. 아래 예제는 ..
Deinitializer는 Initializer와는 반대로 클래스 인스턴스가 소멸되기 직전에 호출한다. 디이니셜라이저는 오직 클래스 타입에서만 사용할 수 있으며, 선언을 위해 deinit 키워드를 사용한다. 일반적으로 swift가 자원의 해제를 자동으로 알아서 해주는데, 열었던 파일을 사용이 끝나고 닫는 것 같이 사용자가 자원 해지를 위해 수동으로 작업 해야하는 경우도 있다. 디이니셜라이저는 클래스당 오직 하나만 선언할 수 있고 파라미터를 받을 수 없다. 기본적인 형태는 다음과 같다. deinit { // perform the deinitialization } 디이니셜라이저는 자동으로 호출되고 수동으로 호출할 수 없다. 부모 클래스의 디이니셜라이저는 자식 클래스에서 따로 선언하지 않아도 자동으로 호출된다..
- 정보보안기사 #실기 #정리
- 이탈리안 레스토랑
- await
- 인천 구월동 이탈리안 맛집
- react
- 인천 구월동 맛집
- react-native
- Async
- javascript
- 맛집
- redux-thunk
- Promise
- redux
- AsyncStorage
- 파니노구스토
- Total
- Today
- Yesterday