목록iOS_Swift (29)
슈프림 블로그
문자열 문제 진짜 어렵다!!!!!!!!! 매번 구글링 하지 말고 정리해 둬야 겠다는 필요성을 느꼈다... Swift 주의사항 문자열에서 역슬래쉬(\)는 연산자 역할을 하므로, \를 문자 자체로 사용하고 싶은 경우에는 "\\" 처럼 두 번 사용해야 한다. => 이거,, 매번 눈 빠지게 1개씩 썼는지 2개씩 썼는지 확인하지 말고 자동 변환해주는 프로그램을 하나 만들까....?ㅠㅠ Swift 정규식 사용 방법 🐶 문자열 일부가 일치하는지 확인하는 법 (첫번째로 일치하는 부분) 이 방법은 문자열에서 정규식과 일치하는 모든 부분을 구할 수는 없다. 가장 첫번째로 일치하는 부분만 구할 수 있기 때문이다. NSRegularExpression.firstMatch 를 사용하기도 하지만, 나는 아래 방법이 더 편리한 것 ..
SwiftLint XCode 프로젝트에 Swift 코드 컨벤션을 잡아주는 SwiftLint를 적용하는 법을 알아보자. 일반적으로 Lint는 다른 언어에서도 소스코드를 분석하여 코드 스타일이나 프로그램 오류가 발생할 수 있는 부분을 찾아주는 도구로 활용된다. SwiftLint는 Swift 언어의 스타일 규칙에 맞지 않는 코드를 찾아내어 경고 또는 에러를 표시해주는 도구다. SwiftLint를 사용하면 프로그래머는 코드 스타일과 형식(규칙)에 집중하기보다는 더 좋은 성능과 효율에 집중하여 코드를 구현할 수 있게 된다. SwiftLint Repository github.com/realm/SwiftLint realm/SwiftLint A tool to enforce Swift style and conventio..
iOS 개발을 하거나, iPhone 데이터를 맥에 백업 및 연동하기 위해 iPhone을 Mac에 연결하는 방법을 알아보자! 그리고, 최초 한번 연결 이후부터는 케이블이 없어도 Wi-Fi를 이용하여 자동으로 연결되도록 설정하는 법을 알아보자. 먼저, 기본적으로 맥의 Finder를 열어보면 좌측 메뉴에는 이렇게 나와있다. USB 케이블을 이용하여 iPhone과 Mac을 연결해준다. 연결한 iPhone 화면을 보면 다음과 같은 메세지가 표시된다. 신뢰를 선택하고 iPhone 기기 암호를 입력해준다. 다시 Finder를 보면 에 기기 연결이 활성화 되어 있는 것을 볼 수 있다! 만약 활성화 되어있지 않다면 Finder 환결설정에서 CD, DVD 및 iPod을 체크한다. 연결된 기기를 클릭해보자. 이 기기에 한번..
tngusmiso.tistory.com/21?category=802241 [Swift] 객체를 추상화 하는 Struct와 Class 사용법, 차이는 무엇일까? 프로그램을 수많은 객체라는 기본 단위로 나누고, 이 객체들의 상호작용으로 서술하는 프로그래밍 방법론을 객체지향 패러다임이라고 한다. 객체를 만들기 위한 방법으로는 Struct (구조체) 와 Cl tngusmiso.tistory.com 전에도 구조체와 클래스에 대한 이야기를 썼지만, 이론이 그렇지 실제 데이터 구조를 설계할 때, 도대체 어떤 것을 선택해야 좋을 지 고민한 적이 많다. 찾아보니 Apple Developer 사이트에서 구조체와 클래스 중 어떤 것을 선택할지에 대해 다루는 아티클이 있어서 정리해보려고 한다. developer.apple.c..
앱을 만들다보면 로컬 작업만으로도 충분한 경우도 있지만, 웹서버와 통신이 필요한 경우가 대부분이다. 웹서버 통신은 크게 2종류로 나눌 수 있다. HTTP 통신 : URL 기반으로 클라이언트에서 요청을 보내고, 서버로부터 응답을 받는 형태의 통신 웹소켓 통신 : 클라이언트와 서버가 특정 Port를 통해 연결되어있는 양방향 형태의 통신. 실시간 통신에 주로 사용된다. 오늘은 iOS 앱에서 HTTP/HTTPS 통신 하는 법을 살펴볼 예정이다. developer.apple.com/documentation/foundation/urlsession Apple Developer Documentation developer.apple.com URLSession URLSession은 HTTP / HTTPS 기반의 URL로부..
DispatchQueue(GCD)의 종류 1. main queue : Serial 2. global queue : Concurrent / QoS 설정 3. private queue : 디폴트 Serial (Concurrent로 변경 가능) / QoS 추론 Main Queue DispatchQueue.main - 한개만 존재 => Main Thread에서 동작 - Serial (직렬) - UI 처리를 담당 * 쓰레드 없이 날것의 코드를 실행하는 것은 Main Queue에서 sync로 실행하겠다는 것과 같은 의미이다. * 하지만 DispatchQueue.main.sync는 코드로 사용할 수 없다. (에러) 실행방법 DispatchQueue.main.sync { ... } // 사용 불가! --ERROR-- ..
동기(Sync) vs 비동기(Async) 대기열을 어떤 방식으로 처리할지 정하는 것이다. 비동기 메인스레드에서 다른 스레드에게 작업을 시작 시키고 작업이 끝날때까지 기다리지 않는다. 메인스레드가 바로 다른 작업을 시작할 수 있게 된다. DispatchQueue.global().async {...} 동기 메인스레드에서 다른 스레드에게 작업을 시키고, 끝날때까지 기다린다. 해당 작업이 끝날 때 까지 메인 스레드는 다른 작업 하지 않고 Block상태를 유지한다. 영상 싱크가 맞는다?? 영상 로딩이 될 때 까지 음성도 기다렸다가 시점이 맞아야 비로소 재생됨을 떠올리면 좋을 것이다. DispatchQueue.global().sync {...} + 다른 스레드로 작업을 보내는 개념이긴 하지만, 작업 끝날 때 까지 ..
쓰레드 Thread 동시성 프로그래밍에 대해 공부하기 전에 쓰레드(Thread)에 대해 먼저 알아야 한다. 쓰레드는 간단하게 말하면 "프로그램이 처리해야 할 작업을 하는 녀석"들을 말한다. 쓰레드가 여러개가 있으면 여러 작업을 동시에 처리할 수 있게 된다. 따라서 시간이 오래 걸리는 작업이 여러개 있을 때, 쓰레드 하나에 모든 일을 맡기는 것 보다는 여러개의 쓰레드에 분산 처리를 시키는 것이 효율적이다. 그렇다면 작업을 어떻게 다른 쓰레드로 분산시켜 동시에 실행되도록 할까? 이것이 동시성 프로그래밍의 목적이다. iOS의 동시성 프로그래밍 iOS의 경우, 프로그래머가 직접 스레드를 관리하지 않는다. 작업을 "대기행렬"에 넣어주기만 하면, 적절한 스레드로 분산을 시키는 것은 OS가 알아서 처리해준다! 이렇게..