iOS 환경에서 백그라운 작업의 결과, 비동기 작업의 결과 등 현재 작업의 흐름과 다른 흐름의 작업으로부터 이벤트를 받으려고 할 때 Notification을 많이 사용합니다. 예를 들면, 대용량 파일을 다운로드하는 스레드를 생성하고 다른 페이지에서 다른 작업으로 넘어가도 다운로드 완료 알림 팝업을 띄울 수 있는 것이 있습니다. 물론 다른 방법도 존재하지만... 예를 들자며는... 그렇다는 겁니당 Notification Notification Center를 통해 정보를 전달하기 위한 구조체입니다. // 알림을 식별하는 태그 var name: Notification.Name // 발송자가 옵저버에게 보내려고 하는 객체. 주로 발송자 객체를 전달하는 데 쓰임 var object: Any? // Notifica..
ATS 애플리케이션과 웹 서비스 사이에 통신 시 보안 향상을 위한 기능으로 iOS 9.0, macOS 10.11부터 적용 가능합니다. 모든 인터넷 통신 시 안전한 프로토콜을 사용하도록 보장하는 것으로 사용자의 민감한 정보가 유출되는 것을 방지합니다. URLSession, CFURL 그리고 NSURLConnection API를 이용해 데이터를 주고받을 때 ATS 기능을 기본적으로 사용하게 됩니다. ATS가 활성화되어있을 때는 HTTP 통신을 할 수 없으며 애플에서 권장하는 아래 요구 사항을 충족하지 않은 네트워크는 연결에 실패할 수 있습니다. 예외사항 애플리케이션이 ATS가 요구하는 사항을 충족하기 힘든 경우, ATS 기능을 비활성화할 수 있습니다. 아래는 ATS 기능을 사용하지 않을 수 있는 예외사항입니..
모바일 앱을 사용하다 보면 현재와 다른 흐름 또는 알림, 경고 등을 위해서 팝업 형태의 창을 자주 띄우는 데요 iOS 에서 대표적으로 Alert, ActionSheet가 있습니다. Alert 와 ActionSheet는 화면에 보여지는 것만 다를뿐, 구성요소는 같습니다. Alert 중요한 액션을 하기 전 경고가 필요한 경우 액션을 취소할 기회를 제공해야 하는 경우 사용자의 작업을 한 번 더 확인하거나 삭제 등의 작업을 수행하거나 문제 사항을 알릴 때 결정이 필요한 중요 정보를 표시할 경우 Action 사용자가 고를 수 있는 액션 목록이 여러 개일 경우 새 작업 창을 열거나, 종료 여부 확인 시 사용자의 결정을 되돌리거나 그 동작이 중요하지 않을 경우 스타일 지정을 통해서 Alert 형태로 구현할 것인지, ..
Gesture Recognizer 제스처 인식기는 여러 제스처 관련 이벤트를 인식할 수 있습니다. 특정 제스처 이벤트가 일어날 때 마다 각 타깃에 맞는 액션 메시지를 보내어 제스처 관련 이벤트를 처리할 수 있습니다. 예를 들어, 단순하게 화면을 터치할 수도 있고, 길게 누를수도 있고, 두손가락으로 확대할 수 도 있고, 화면도 넘길 수 있습니다. UIGestureRecognizer 종류 UIGestureRecognizer 클래스는 특정 제스처 인식기에 대한 동작을 정의합니다. 또한 델리게이트 객체를 활용하여 일부 동작을 더욱 세밀하게 사용자화 할 수 있습니다. Gesture Recognizer를 사용하기 위해서 Target-Action 연결을 설정한 후 UIView의 메서드인 addGestureRecogn..
Target-Action 디자인 패턴 Target-Action 패턴 역시 상당히 많이 사용되며 @IBAction func .... 의 형태로 Storyboard에 있는 뷰를 ViewController에서 참조할때 많이 사용하셨을 겁니다. 모르고 써도 잘 되지만 알고 사용하면 더 잘, 넓게 사용할 수 있겠죠 ?? 라고 누군가가 조언해주었슴다 ㅎ 다시 본론으로 .. Tartget-Action 디자인 패턴에서 객체는 이벤트가 발생할 때 다른 객체에 메시지를 보내는 데 필요한 정보를 포함합니다. 액션은 특정 이벤트가 발생했을 때 호출할 메서드를 의미합니다. 타겟은 액션이 호출될 객체를 의미합니다. .... 뭔가 번거로워 보이지 않나요? 타겟 객체에 그냥 메서드를 넣으면 안되나? Apple이 뭔가 만들어 놓은 데..
싱글턴(Singleton) 싱글턴은 '특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체'를 의미합니다. 싱글턴은 애플리케이션이 요청한 횟수와는 관계없이 이미 생성된(static) 같은 인스턴스를 반환합니다. 즉, 애플리케이션 내에서 특정 클래스의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있습니다. 예시를 통해 살펴보겠습니다. 메타몽 소환! 간단하게 버튼에 따라서 서로 다른 페이지를 띄워주고 다시 뒤로 갈 수 있는 UI를 구성했습니다 class Singleton{ static let shared = Singleton() var state: MetamongState? } enum MetamongState: String{ case metamong case metamong_ch..
iOS 개발에서 정말 많이 쓰이는 Delegation Pattern에 대해서 알아보겠습니다. Delegate 위임하다 Delegate Pattern 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공합니다. 다시 말해, 어떤 객체에서 일어나는 이벤트에 관한 혹은 어떤 객체에 뿌려줄 데이터에 관한 코드를 다른 객체에서 작성해주는 것을 말합니다. 그리고 이러한 행위는 반드시 protocol을 동반합니다. CEO/ secretary Delegate Pattern을 이해하기 정말 좋은 Bob 님의 블로그 예시 '사장과 비서'를 인용해서 설명을 이어가겠습니다. protocol JobDelegate{//protocol : 서로간의 소통을 위한 약속 func passData(jobResource..