Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Olive Study Room

[Swift, iOS] Swift 개요와 개발환경 본문

Coding/iOS

[Swift, iOS] Swift 개요와 개발환경

Olive Dev 2021. 10. 7. 01:56

안드로이드 프로젝트를 끝내고 오랜만에 다시 iOS프로젝트에 대해 공부하면서

얼레벌레 남 코드 활용이 아닌 내 코드를 작성하기 위해 기초부터 다시 잡아보려고 한다.

 

이제는 CS에 대해 조금 공부를 한 상태이기 때문에 하나하나 이해하는데 어려움이 없을 것이라고 예상한다.

 

여러 자료들과 학교 수업 자료를 이용하여 공부한다. 

더보기

* 학교 수업 자료 목표

- Swift 언어를 이해한다

- 애플의 개발 도구들과 친숙해진다

- 앱을 개발하기 위한 디자인 패턴을 이해하고 적용한다

- 최신 모바일 기기를 이해하고 활용한다 

- iOS에서 제공하는 코어 프레임워크를 사용한다


Swift 개요

  • 2014년 9월 iOS 8이 발표되며 apple이 개발한 Swift1.0이 발표
  • 2015년 Swift 2 발표, 오픈소스화 발표
  • 2016년 Swift 2.2, 2016년 가능 Xcode8, Swift 3이 개뱔됨

Object C란?

  • 코코아 프레임워크를 사용하기 위한 C언어 기반 객체 지향 언어
  • 1970년대에 도입되었고 C언어에 스몰토크 스타일의 메시지 구문을 추가한 언어. 

Object C의 단점

  • 오래된 언어 기반(C) - 헤더파일, 구현파일 구분
  • nil 처리를 런타임을 컴파일러가 잡지 못함
  • 타입 체크 약함
  • 성장 한계

Swift의 강점 "안전하고(safe) 빠르고(fast) 표현성(Expressive)이 좋다 " - Apple이 말하는 Swift의 특징

  • 안전
    • 프로그래머가 저지를 수 있는 버그를 문법을 통해 방지한다.
    • 옵셔널/gurad let(nil에 대한 처리), 오류처리, 타입 통제 등 안전한 프로그래밍을 추구한다
  • 신속성
    • C언어를 기반으로 한 프로그래밍 언어를 대체하려는 목적
    • 실행 속도의 최적화, 더 빠른 컴파일 성능 구현
  • 표현성
    • 보기 좋고 현대적, 세련된 문법
      • 클로저, 튜플, 제네릭
    • 다중 패러다임 프로그래밍 언어
      • 명령형 객체지향 프로그래밍
      • 함수형 프로그래밍

                        -> 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍

                        -> 1. 어떤 상황에서도 일정하게 같은 결괄르 도출할 수 있다.

                        -> 2. 값 변화를 멀리하여 함수 호출이 상호 간에 배타적으로 실행되고 병렬처리에 유리하다

                        -> 3. 대규모 병렬처리, 멀티코어의 환경에서 효율적인 프로그래밍이 가능하다.

  

      • 프로토콜 지향 프로그래밍

                        -> 타입 대부분이 클래스(참조 타입)가 아닌 구조체(값타입)으로 구현되어있다.

                        -> 상속 불가능한 구조체로 공통 기능을 가질 수 있도록 한다.(프로토콜, 익스텐션 이용)

                        -> 추후 게시글로 작성 예정!


개발 환경

Swift 언어 실습 환경 - Xcode

  • 플레이그라운드
  • iOS, Mac OS 프로젝트
  • 콘솔 기반 실행
  • 온라인 swift 환경
  • ARC(Automatic Reference Counting) : 자동 참조 횟수 계산  -> 추후 게시글로 작성 예정!

Xcode란?

iPhone과 MacOS용 소프트웨어를 개발하는 필수 도구 모음집

  • IDE(Integrated Development Environment : 통합 개발 환경) 제공
  • 통합되고 잘 정리된 개발 관련 정보 제공
  • gcc컴파일러를 기본으로 사용
  • LLDB를 기본 디버거로 사용하며 IDE와 잘 통합되어있음

1. 플레이그라운드

  • REPL(Read-Eval-Print-Loop) : 코드를 짜면 바로 읽어서 실행
  • 프로젝트 생성 불필요
  • 코드 작성/변경 - 바로 결과 확인 

2. 앱 프로젝트

  • 선택 환경마다 실행 환경이 조금 다름
  • 개발 프로젝트 내 플레이그라운드 포함 가능

3. 프로젝트 정보 - Bundle ID 

  • organization Identifier + product name
  • 개별 앱을 식별하기 위한 정보
  • 앱을 등록하거나 업데이트할 때 같은 앱으로 등록하기 위함

iOS 구성 기능

  • Core OS
    • OS X kernel, Power mgmt, Mach, Keychain, BSDm Certificates, Sockets, File System, Security, Bonjour
  • Core Services (기능과 내부 데이터베이스)
    • Foundation(앱에서 필요한 대부분의 기본적 기능), Core Location, Address Book, Net Services, Networking, Threading, File Access, Preferences, SQLite, URL Utilities
  • Media
    • Core Audio, JPEG/PNG, OpeAL, TIFF, Audio Mixing, PDF, Audio, Quartz(2D), Recording, Core, Video, Animation, Playback, OpenGL ES
  • Cocoa Touch (사용자 터치에 의한 인터페이스 기능)
    • Multi-Touch(손가락 네개까지), Notification, Core motion, Web View, View, Map kit, Hierachy, Image Picker, Localization, Camera, Controls
Comments