본문 바로가기

iOS-Study

iOS-study : 1주차 내용 정리

iOS vs Android

1. 프로그래밍 언어

- iOS : Objective-C / Swift

- Android : Java

 

2. 테스팅

- iOS 

실뮬레이터를 사용, 안드로이드보다 훨씬 빠르다.

Apple 장치의 정확하고 사실정인 표현을 렌더링 하지 못하는 경우가 많다.

- Android

에뮬레이터 사용, CPU를 포함하는 효과적인 가상 머신이라 더 현실적이다.

 

3. 상호작용

iOS는 홈 버튼이 존재하지만 안드로이드는 홈, 뒤로가기, 멀티태스킹 버튼이 항상 존재한다.

따라서 iOS의 UI를 안드로이드에 그대로 쓸 수 없다.

 

4. 앱개발 기간

- iOS : 애플에 호환되는 기기로 구축하기 대문에 안드로이드 보다 짧다.

- Android :  삼성, LG 등 다양한 안드로이드 기기에 호환되는 앱을 구축하기 때문에 개발하는 시간이 오래 걸린다.

 

5. 개발 환경

- iOS : 아이폰에만 한정적으로 호환되어 제한적이며 굉장히 폐쇄적인 개발 환경을 가진다.

- Android : 오픈소스를 기반으로 운영되기 때문에 제약사항이 적어 앱 개발 장벽이 낮은 편이다.

 

Swift란?

스위프트는 iOS, macOS, watchOS, tvOS를 개발하기 위해 애플에서 제공하는 프로그래밍 언어

스위프트는 개발자의 실수에 대해  엄격하게 문법을 적용하며 옵셔널, guard구문 등을 통해 강력하 통제하여 안정성을 높이고 있다. 이 외에도 C에 준하는 속도의 신속성과 사용하기 편하고 보기 좋은 문법을 구성하여 표현성을 강조하고 있다.

 

차용 패러다임

1. 객체지향 프로그래밍

기존 명령형 프로그램처럼 명령의 목록이 아닌 여러개의 독립된 객체들의 모임으로 파악하고자 하는것

유지보수가 간편해지고 다른 사람이 쉽게 이해 가능하다는 장점이 있다.

 

2. 함수형 프로그래밍

하나의 프로그래밍 패러다임으로 정의되는 일련의 코딩 접근 방식으로, 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미한다.

 

3. 프로토콜 지향 프로그래밍

스위프트 기본 타입들은 구조체 형태로 되어 있는데 이런 형태임에도 많은 기능 구현이 가능한 이유가 바로 프로토콜 때문이다. 이로 인해 값타입인 구조체를 참조타입인 클래스처럼 효율적으로 사용이 가능하며 오류를 줄일 수 있다. 여기에 익스텐션을 사용하여 더 나은 메커니즘 구현도 가능하다.

 

SwiftUI란?

SwiftUI는 뷰를 구현할 수 있도록 만든 프레임워크로 최소한의 코드만드로 Swift의 성능을 사용하여 모든 Apple 플랫폼에서 사용 가능한 앱을 만들 수 잇다.

 

특징

1. 선언적 구문을 사용

SwiftUI는 선언적 구문을 사용하여 뷰를 구성하기가 간단하고 쉬우며 가독성도 올라가는 효과가 있다.

 

2. 프리뷰 기능 제공

SwiftUI는 Xcode에서 Preview기능을 제공한다.

 

UIkit란?

Uikit은 iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크이다.

-   UIkit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다.

- 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼러트 창 등 애플리케이션 화면을 구성하는 요소들을 포함한다.

 

기능별 요소

사용자 인터페이스

- view and Control : 화면에 콘텐츠 표시

- view Controller : 사용자 인터페이스 관리

- Animation and Haptics : 애니메이션과 햅틱을 통한 피드백 제공

- Window and Screen : 뷰 계층을 위한 윈도우 제공

 

사용자 액션

- Touch, Press, Gesture : 제스쳐 인식기를 통한 이벤트 처리 로직

- Drag and Drop : 화면 위에서 드래그 앤 드롭 기능

- Peek and Pop : 3D터치에 대응한 미리보기 기능

- keyboard and Menu : 키보드 입력을 처리 및 사용자 정의 메뉴 표시

 

Objective-C란?

C언어에서 파생된 객체 지향 프로그래밍 언어로써 C언어에 무형성 순수 객체지향 언어인 스몰토크 형식의 객체 지향 패러다임을 확장 형태로 얹은 언어이다.

Objective-C는 C++과 달리 모든  C프로그램은 다 Objective-C로 컴파일 가능하며, 프로그램의 의미도 양 언어가 동일하다는 의미이다.

다중상속을 지원하지 않으며, 그 대신 자바의 인터페이스에 해당하는 프로토콜을 정의할 수 있다. 또한 카테고리를 통해 기존 클래스에 새로운 메소드를 추가하여 클래스 기능 확장도 가능하다.