ios 27

[iOS] Bounds와 Frame의 차이점

UIView의 Instance Property 중 Frame 과 Bounds가 있는데 이 두개의 차이점에 대해서 알아보겠습니다. Frame https://developer.apple.com/documentation/uikit/uiview/1622621-frame frame - UIView | Apple Developer Documentation The frame rectangle, which describes the view’s location and size in its superview’s coordinate system. developer.apple.com SuperView의 좌표를 기준으로 View의 위치와 크기를 나타낸다. x, y 좌표를 변경하게 되면 자기 자신의 위치가 변경된다. Bounds..

iOS 2020.01.03

[iOS] Cocoa Touch, Foundation, UIKit Framework에 대해서

안녕하세요. 이번 글에서는 iOS 애플리케이션 개발환경 토대인 코코아 터치 프레임워크와 그 하위 레벨 프레임워크인 UIKit, Foundation에 대해 알아보려고 합니다. Cocoa Touch Framework https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/Cocoa.html Cocoa (Touch) Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be va..

iOS 2020.01.03

iOS앱 TDD로 개발하기 #1

안녕하세요. 크몽에서 iOS앱을 개발중인 gwangyonglee(harry)입니다. 크몽 기술 블로그에서 포스팅했었는데, 개인 블로그에서도 포스팅합니다. 이 글은 TDD를 설명하는 글이 아닌 iOS 앱 TDD 적용기에 대해 작성해보려고 합니다. #1,2로 나누어서 작성할 예정이고, #1에서는 TDD를 적용하게 된 계기와 어떤 식으로 적용하였는지(간단한 예제 포함)에 대해 다뤄보려고 합니다. 그럼 시작하겠습니다. TDD를 적용하게 된 계기 회사에서 프로젝트를 진행할 때 일정 산출들을 하고 계실 텐데 자신이 산출한 일정을 정확히 맞춘 적이 많으신가요? 저는 개발을 진행하면서 생각지도 못한 이슈들이 나올 것을 예상하여 하루 이틀 정도 여유롭게 잡는 편이지만, 그럼에도 불구하고 일정이 딱 맞을 경우도 있고 데드..

iOS 2020.01.03

[Swift] 타입메소드, 인스턴스 메소드란

인스턴스 메소드란 클래스, 구조체, 열거형의 인스턴스에 속한 메소드를 의미합니다. 예제 class Temp { func instanceMethod() { print("instanceMethod") } } let temp = Temp() temp.instanceMethod() 인스턴스 메소드를 호출하기 위해서는 Temp를 인스턴스화 후 해당 메소드를 호출해야합니다. 인스턴스 없이 독립적으로 호출할 수 없습니다. 타입 메소드란 타입 자체에서 호출할 수 있는 메소드를 의미합니다. 클래스를 위한 타입메소드는 func 키워드 앞에 class 키워드를 작성합니다. 구조체와 열거형을 위한 타입메소드는 func 키워드 앞에 static 키워드를 작성합니다. 예제 // class class Temp { class fun..

Swift 2020.01.03

[Swift] 노티피케이션 센터와 노티피케이션

iOS 환경에서 사용하는 옵저버 패턴을 사용하는 노티피케이션 센터와 노티피케이션에 대해 알아보려고 합니다. Notification 등록된 노티피케이션에 노티피케이션 센터를 통해 정보를 전달하기 위한 구조체입니다. 주요 프로퍼티 name : 알림을 식별하는 태그 var name: Notification.Namecs object : 발송자가 옵저버에게 보내려고 하는 객체. 주로 발송자 객체를 전달하는데 쓰입니다. var object: Any?cs userInfo : 노티피케이션과 관련된 값 또는 객체의 저장소 예) 특정 행동으로 인해 작업이 시작되거나 완료되는 시점에 다른 인스턴스로 노티피케이션이 발생 시 필요한 데이터를 같이 넘겨줄 수 있습니다.간단한 예로 네트워킹을 이용하는 앱이라면 네트워킹이 시작 및 ..

Swift 2018.09.16

[iOS] Foundation이란?

# Foundation 프레임워크 코코아 터치 프레임워크에 포함된 Foundation은 원시 데이터 타입 String, Int, Double, 컬렉션 타입 Array, Dictionary, Set 및 운영체제 서비스를 사용해 애플리케이션의 기본적인 기능을 관리하는 프레임워크입니다. - Foundation 프레임워크는 데이터 타입, 날짜 및 시간 계산, 필터 및 정렬, 네트워킹 등의 기본 기능을 제공 - Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터 타입은 iOS뿐만 아니라 macOS, watchOS, tvOS 등 모든 애플 SDK에서 사용됨. Foundation에서 제공하는 데이터 타입 및 컬렉션 타입의 대부분은 Objective-C 언어의 기능에서 지원하지 않는 것이기 때문에 언..

iOS 2018.05.04

[iOS] 셀렉터(Selector)란

# 셀렉터(Selector) - 함수를 직접 지정하는 기능을 가진 일종의 함수 선택자 Selector는 본래 Objecive-C에서 클래스 메소드의 이름을 가르키는 데 사용되는 참조 타입입니다.동적 호출 등의 목적으로 @selector() 어트리뷰트 메소드 이름을 인자값으로 넣어 전달하면 이를 내부적으로 정수값으로 매핑해서 처리하는 형태입니다. 이것이 Swift로 넘어오면서 구조체 형식으로 정의되고, #selector()구문을 사용하여 해당 타입의 값을 생성할 수 있게 되었습니다. Swift4부터는 Selector 타입으로 전달할 메소드를 작성할 때 반드시 @objc 어트리뷰트를 붙여주어야 합니다. 이는 Objective-C와의 호환성을 위한 것으로, Swift에서 정의한 메소드를 Objective-C에..

iOS 2018.05.02

[iOS] CocoaPods이란

# CocoaPods이란 코코아팟(CocoaPods)은 코코아 프로젝트에 대한 의존성 패키지를 관리하는 도구 중 하나입니다.쉽게 말해 애플 코코아 개발 환경에서 진행되는 애플리케이션 프로젝트에 필요한 외부 라이브러리를 간단하게 설치할 수 있도록 도와주는 유틸입니다. # CocoaPods 설치 명령어 -> sudo gem install cocoapods (gem : 코코아팟은 루비로 만들어진 프로그램입니다. 루비용 패키지 관리 도구인 gem을 이용해서 설치하는 것입니다.) 참고 : 꼼꼼한 재은씨의 스위프트 실전편잘못된 부분 있으면 댓글 달아주세요!

iOS 2018.04.30

[Swift] guard vs if

프로그래밍을 하다보면 조건문은 종종 depth가 길어져 복잡도를 높이는 원인이 되곤 합니다. 이러한 문제점을 피하기 위해 Swift 2.0에서 guard가 등장했습니다. guard vs if guard문은 후속 코드들이 실행되기 전에 특정 조건을 만족하는지 확인하는 용도로 사용합니다. else블록에는 이후의 코드 진행을 막는 return, break가 삽입되어야 하고 주로, 실행 흐름을 종료하기 위한 목적으로 주로 사용합니다. 반면에 if문은 조건이 참인 경우에 후속 코드를 실행하지 않는 코드가 삽입되어야 합니다. 옵셔널 바인딩시 차이점 guard, if문과 옵셔널 바인딩할 때의 차이점은 바인딩을 하는 변수와 상수의 scope입니다.

Swift 2018.04.27