ios

    ios Storyboard간 이동

    ios Storyboard간 이동

    서론 소규모 프로젝트나 개인프로젝트의 경우 하나의 Storyboard에 여러 view controller를 부착해 한눈에봐도 앱의 흐름을 파악할 수 있도록 작성할 수도 있습니다. 그러나, 이 방법은 요즘 가장 중요한 '협업'의 관점에서 충돌관리가 굉장히 어렵다는 단점이 있습니다. 그래서 저는 충돌을 피하고 페이지별로 작업할 수 있도록 view마다 Storyboard를 각기 작성하여 프로젝트를 진행하겠습니다. 0. 전제 Main.storyboard는 ViewContorller.swift, aController.storyboard는 aController.swift 쌍으로 연결되어 있는 상황입니다. 1. Storyboard id 입력 view별로 Storyboard가 따로 존재하는 환경이니, 이동을 하려면 이..

    Alamofire를 통해 POST/GET 통신하기

    Alamofire를 통해 POST/GET 통신하기

    Alamofire는 swift의 Foundation networking을 기반으로 한 http 네트워킹 라이브러리 입니다. 네트워크 작업을 단순화 시켜주어서 굉장히 쓰기 편리합니다. 굉장히 다양한 기능이 있는데요, 그중 GET/POST 방식으로 http통신을 해서 응답값을 받아오는것 까지 구현해보도록 하겠습니다. Alamofire은 크게 다음과같이 두가지로 나뉩니다. request url : 메시지를 보내고 응답을 요청할 인터넷 URL 주소 method : .get (post사용시에는 아이에 다른 방법으로 사용합니다.) parameters : 요청시 같이 보낼 파라미터 encoding : 사용할 encoding 방식 (URL, JSON, PropertyList 세가지 지원) hearder : [Strin..

    m1 기반 mac에서 cocoapod 사용하기

    m1 기반 mac에서 cocoapod 사용하기

    Alamofire를 사용하기 위해 cocoapod을 설치하고 사용했는데, m1칩은 별도의 추가과정이 있어야 오류가 안나고 사용이 잘 되더라구요. 저같이 삽질하시지 않았으면 해서 포스팅 남기겠습니다. value-of-life.tistory.com/152 Swift(스위프트) - mac(맥) m1 에서 cocoapods 설치 및 적용하기 애플의 앱을 개발하기 위해 필요한 라이브러리 모음 집 cocopods 설치 과정을 알아보겠습니다. 1. MAC m1에서 cocoapods를 설치하기 위한 사전 설정 1.1 Finder -> 응용 프로그램 -> 터미널을 복제하여 터미 value-of-life.tistory.com 위 블로그의 방법대로 하시면 됩니다. 터미널도 로제타를 사용해서 여는건 상상도 못했네요...허허

    [기상알리미] application preview

    [기상알리미] application preview

    서론 iOS앱 개발 수준을 끌어올리려 개인프로젝트를 진행하려고 합니다. Android를 작업하던 수준과 동일하게 끌어올리려 기술적용 위주의 프로젝트가 될 것 같습니다. 주제도 너무나 식상한 주제이지만... 기술적용이 우선되게 방향을 설정하다 보니 어쩔 수 없었던것 같습니다. 개발기간은 다음주 일요일인 4월 24일 완성을 목표로 합니다. 개요 data server에 회원의 정보를 저장해서 가입되있다면 저장된 지역의 기상을 손쉽게 볼 수 있습니다. DB서버는 사설 호스팅 서버의 MySQL 5.0.11을 사용합니다. 클라이언트-DB간 통신은 Spring boot으로 서버를 제작해 중계합니다. 클라이언트는 alamofire API를 사용해 Http communication을 POST 방식으로 통신할 것입니다. ..

    iOS 앱의 생명주기 (Application Lifecycle)

    iOS 앱의 생명주기 (Application Lifecycle)

    0. 서론 안드로이드보다 ios의 생명주기가 단순했던 이유는 ios가 멀티테스킹이 불가능했기 때문이였습니다. ios13이후 ios도 멀티테스킹이 가능해지면서 SceneDelegate라는 새 위임객체가 등장했습니다. 이후 AppDelegate가 관장한 생명주기 관리의 대다수가 SceneDelegate로 옮겨지게 되면서 AppDelegate는 앱의 초기 구동 및 전체에 관련된 이벤트의 처리정도를 담당하게 되며 기능이 축소됬습니다. 단, Scene 기능은 명시적으로 사용(opt-in)해야하기 때문에 info.plist에 키를 추가해주지 않으면 SceneDelegate은 사용할 수 없고 ios13이전처럼 AppDelegate이 생명주기를 관장하게 됩니다. 그러므로, 우리는 둘 다 공부해야 합니다 ^-^....흑..

    iOS 특징

    iOS 특징

    간단하게 서술해보도록 하겠습니다. 우선 ios는 object-c / Swift언어 기반으로 작성됩니다. delegate작업을 안드로이드는 adapter, ios는 delegate로 처리합니다. 앱 화면 개발은 UIViewController, StroyBoard을 통해서 진행되구요 특정 카테고리에 모여있는 환경설정 및 엑세스 권한이 모여있습니다. 훌륭한 애니메이션 품질과 뒤로가기 버튼이나 기능이 따로 없어 앱에 구현을 해주어야 한다는 점, 애플스토어의 철저한 앱 검수로 일단 검수가 길고 리젝이 자주 이루어지지만, 대신에 사용자들은 악성 어플리케이션으로부터 비교적 안전할 수 있다는 점도 있겠네요. 마지막으로 폐쇄성과 폐쇄성으로 기인한 보안성이 있겠습니다. 안드로이드는 공유저장소가 있어 모든 앱이 접근할 수 ..

    Swift 클로저

    Swift 클로저

    Closures입니다. closer 아닙니다!! ㅎㅋㅋ 참조 타입인 클로저란 코드의 블럭을 뜻합니다. 자세히 설명하자면, 코드안에서 전달되어 사용할 수 있는 로직을 가진 코드의 코드의 블럭이며 {}로 구분됩니다. 일급 시민 취급이라 전달인자 및 변수, 상수들으로 저장, 전달이 가능합니다. 함수는 클로저의 일종으로 이름이 있는 클로저라고 생각하면 된다고 합니다. 전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수 : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저 클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥(context)으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 Swift에서 클로저는 다음과 같은 내용을 포함해 최적화되어 있습니다. 문맥(context)..

    Swift 사용자 정의 타입 - Class

    Swift 사용자 정의 타입 - Class

    클래스는 참조 타입입니다. 구조체와 쓰임이 비슷하지만, 구조체와는 다르게 상속할 수있고, deinit를 사용할수 있으며, 참조횟수 계산도 가능합니다. 또한, 클래스의 인스턴스에 타입 캐스팅이 가능합니다. 기본 형태 class ClassName{ //구현부 } 예제 class Food{ //불변 프로퍼티 //가변 프로퍼티 var name: String var price: Int //타입 프로퍼티 final class var writer:String{ return "녹색하늘" } class var location: String{ return "안양" } //생성자 init(){ name = "" price = 0 } init(name: String, price: Int){ self.name = name se..

    Swift 사용자 정의 타입 - Struct

    Swift 사용자 정의 타입 - Struct

    Struct는 '값 타입' 입니다. 스위프트의 대부분의 타입은 구조체로 이루어져 있습니다. 구조체는 클래스와 합께 OOP를 위한 필수요소이며, 프로그램의 코드를 추상화하기 위해 사용합니다. siwft의 구조체는 다른 언어와는 다르게 별도의 인터페이스 파일을 만들 필요가 없습니다. 구조체와 클래스는 모두 새로운 데이터 타입을 정의하고 기능을 추가합니다. 하지만 구조체는 '값 타입', 클래스는 '참조 타입'이라는 차이가 있죠. 둘중 하나를 어떤 기준으로 선택해서 사용해야 할까요? 애플 공식 문서에서는 다음 조건 중 하나 이상에 해당된다면 구조체 사용을 권합니다. 연관된 간단한 값의 집합을 캡슐화 하는 것만이 목적일 때 캡슐화된 값이 참조되는 것보다 복사되는 것이 합당할 때 구조체에 저장된 프로퍼티가 값 타입..

    Swift 반복문

    Swift 반복문

    Swift에서 반복문은 for-in, while, repeat-while 세가지입니다. 1. for - in for-each 구문과 유사합니다. 초기식에 따라 조건식을 판단해 실행하고, 변환식을 계산합니다. 조건식이 참일 경우 검사를 계속 진행하고, 거짓일 경우는 종료합니다. 일정 횟수동안 반복해야하는 경우 사용합니다. 기본 형식 for 반복문 안에서 사용할 변수명 in 바구니 객체{ 수행할 작업 } 간단 예제 구구단 for x in 2...9{ print( 2*x ) } 1~100까지의 총 합 //1부터 100까지의 합 var total: Int = 0; for x in 1...100{ var sumBefore = total total = total + x print("\(sumBefore)+\(x) ..

    Swift 간단한 사칙연산

    Swift 간단한 사칙연산

    let a = 8 let b = 5 var result: Int //덧셈 func sum(num1: Int, num2: Int)->Int{ return num1+num2 } result = sum(num1: a,num2: b) print(result) //13 //뺄셈 func sub(num1: Int, num2: Int)->Int{ return num1-num2 } result = sub(num1: a,num2: b) print(result) //3 //곱셈 func mul(num1: Int, num2: Int)->Int{ return num1*num2 } result = mul(num1: a,num2: b) print(result) //40 //나눗셈 func div(num1: Int, num2: I..

    Swift 함수의 선언과 호출

    Swift 함수의 선언과 호출

    함수 선언 //반환값이 있는 함수 func functionName(parameter1 : String, parameter2 : Int) -> String{ return "결과값" } //반환값이 없는 함수 fun noReturnFunc(parameter1 : String) -> Void{ print(parameter1) } //Void는 생략가능합니다. fun noReturnFunc(parameter1 : String) -> { print(parameter1) } //매개변수와 반환값이 없는 경우 func justPrint(){ print("just print") } 함수 호출 func sum(num1: Int, num2: Int)->Int{ result num1+num2 } sum(num1: 2, su..

    Swift 기초 개념 및 데이터 타입

    Swift 기초 개념 및 데이터 타입

    상수와 변수 상수 선언 let 이름: 타입 = 값 상수는 이름그대로 선언한 값 고정 변수 선언 var 이름: 타입 = 값 변수는 이름그대로 값 변경 가능 ! 값이 명확하다면 타입은 생략할 수 있다. 그러나 나중에 할당하려고 하는 상수나 변수는 타입을 명시하여야 한다. var name:String let age:Int name = "녹색하늘" age = 20 print("나의 이름은 \(name)입니다") //나의 이름은 녹색하늘입니다 name = "하늘" print("나의 이름은 \(name)입니다") //나의 이름은 하늘입니다 기본 데이터 타입 Int : 64비트 정수형 UInt : 64비트 양의 정수형 Float : 실수타입 32비트 부동소수형 : 소수점이하 6자리 Double : 실수타입 64비트 ..

    Swfit란 뭘까?

    Swfit란 뭘까?

    mac OS, iOS, watchOS, tvOS등 apple사의 플랫폼을 위한 프로그래밍 언어이다. 공식 사이트에서는 스위프트를 3가지 특징으로 표현한다. Safe 안전한 프로그래밍을 지향한다. 사용전 변수 초기화, 배열 및 정수에 대한 오버플로우 검사, 자동적으로 관리되는 메모리와 같은 기능들과 엄격한 문법을 적용해 프로그래머의 실수를 미연에 방지합니다. Fast 스위프트는 C언어와 동등한 성능을 일정한 수준으로 유지하는데 초점을 맞춰 개발되었습니다. 예를들자면, 가상머신 상에서 바이트코드⁽¹⁾로 실행되는 것이 아니라 C처럼 기계어로 번역되어 사용된다는 점이 있죠. 실행속도 최적화 및 컴파일러의 지속적인 개량을 통해 더 빠른 성능을 구현해 가고 있습니다. Expressive 다양한 언어의 장단점을 참고..

    [개발환경 구축] VMware로 mac os를 설치해보자[1]

    [개발환경 구축] VMware로 mac os를 설치해보자[1]

    IOS App 개발을 위해 개발환경을 구축해보려고 한다. 우선, 맥과 IOS를 위한 애플의 공식적인 IDE인 Xcode를 설치해서 사용해보려고 했는데, Xcode는 mac os환경에서만 사용을 할 수가 있더군요. 그래서 VMware에 mac os를 구동시켜 보기로 했습니다. 물론, 굳이 이럴필요 없이 mac을 클라우드 환경으로 원격 대여하는 방법도 있습니다. 아래 링크에 종류와 방법이 자세히 나와있습니다. (영문주의 ㅎㅎ) codewithchris.com/xcode-for-windows/ You can run Xcode on Windows! Here are 12 different ways to use Xcode on Windows and do iOS development on a PC. You don't..