일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- viewcontroller
- 후행 클로저
- ios
- DispatchQueue
- uikit
- SWiFT
- WWDC16
- AppTransportSecurity
- OperationQueue
- 동시성프로그래밍
- entrypoint
- property wrapper
- IBOutlet
- 진입점
- IBOutletCollection
- TableView
- Remot Push
- Choosing Between Structures and Classes
- firebase
- 트레일링 클로저
- userdefaults
- tableViewCell
- weak
- for-in
- RunLoop
- 연산 프로퍼티
- 원격 푸시
- UIButton
- Understanding Swift Performance
- CoreLocation
- Today
- Total
목록전체 글 (72)
iOS 공부하는 감자
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/GXkLU/btrGGwXJGc4/5tdGtbX8oyCQkO6vT2LLHk/img.png)
다크모드는 iOS 13.0 업데이트로 생겨났다. 지금은 프로젝트를 생성하면 다크모드를 지원하는게 기본 설정이지만, (다크모드)지원 여부를 개발자가 프로젝트 설정에서 선택할 수 있다. 프로젝트에서 다크모드를 잘 대응하기 위해서는 라이트모드와 다크모드에서 각각 사용될 수 있도록 색상, 이미지, 아이콘 등 요소에 별도 관리가 필요하다. UIColor에서 다양한 색을 기본 지원하고 있는데, 다크모드를 지원하는 색상과 그렇지 않은 색상이 있다. 이름 앞에 System이 붙은 색상들은 다크모드를 지원해서, 사용자의 디바이스 설정에 따라 색상을 자동 변경해서 보여준다. 예를 들어.. System Background Color를 사용했다면 라이트모드에서는 흰색, 다크모드에서는 검정색으로 표현한다. 만약 개발자가 원하는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bEIf5H/btrGvmW1WW1/VH992T3j06O5UXvOqCZgb0/img.png)
발생 원인 이 런타임 에러는 스토리보드의 뷰객체와 Swift파일의 @IBOutlet or @IBAction의 연결이 끊여졌을 때 발생한다. 대부분은 스토리보드의 뷰객체를 Swift파일과 연결한 후, Swift파일에 연결되어 있는 변수나 함수의 이름을 임의로 변경했을 때 연결이 끊어지면서 에러를 발생시킨다. 가끔.. 그냥 Xcode 문제로 연결이 끊어지고 에러를 발생시킬 때가 있다..! 해결 방법 1) 연결이 끊어진 (에러를 발생시키는) 부분을 찾는다. 스토리보드에서 에러가 발생했을 것으로 의심되는 ViewController를 선택한 후, 커넥션 인스펙터 영역을 확인한다. 해당 ViewController에서 발생한 에러라면 특정 연결 부분에서 노란 경고창을 확인할 수 있다. 2) 에러가 발생한 연결을 끊는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wFcHF/btrGn9i3oAh/bon70oNlbTAyOXJR3St36K/img.png)
What’s New in UIButton for iOS 15 1) New Configuration Style UIButton에 새로운 Configuration API가 도입되면서 4개의 기본 베이직 스타일을 선택해서 적용할 수 있게 되었다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/3lDNg/btrGt3owkWq/KryUe5kwrOnEoboJazTt5K/img.png)
Entry Point란? 프로그램이 시작하는 지점을 의미한다. CPU는 Entry Point를 통해 프로그램을 실행시키기 때문에, 모든 프로그램은 반드시 Entry Point가 존재해야 한다.! Swift에서의 Entry Point C언어를 포함한 많은 프로그래밍 언어에서는 main() 함수를 Entry Point로 사용한다. Swift도 main()함수가 있다..! 다만, C언어처럼 main함수를 직접 구현하는 게 아니라 "@main"이라는 attribute symbol을 사용하여 Swift의 진입점을 지정해준다. (Swift 5.3 ~) // @main 키워드를 사용하여 Entry Point를 알려준다. @main class AppDelegate: UIResponder, UIApplicationDel..
인터럽트란 어떤 신호가 들어왔을 때 인터럽트를 처리하기 위해 CPU를 잠깐 정지시키는 것을 말한다. 인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다. 각 인터럽트는 우선순위가 있고, 우선순위에 따라 핸들러 함수가 실행된다. 인터럽트 핸들러 함수? 인터럽트가 발생했을 때 이를 핸들링(처리)하기 위한 함수로, 커널 내부의 IRQ를 통해 호출된다. 인터럽트가 발생하는 이유 키보드 마우스 등 I/O 디바이스와 디스크에서 발생 0으로 숫자를 나누는 산술 연산에서의 발생 프로세스의 오류로 인한 발생 인터럽트는 "하드웨어 인터럽트", "소프트웨어 인터럽트" 두 가지로 구분된다. 하드웨어 인터럽트 키보드와 마우스의 연결 등 I/O 디바이스에서 발생하는 것을 포..
공통 : 특정 문자를 기준으로 문자열을 분리하여 Collection 형태로 반환한다. Split() [Substring] 형태로 반환한다. (서브스트링은 원본값의 메모리를 공유하므로, 메모리가 조금 더 효율적으로 작동됨) 맨 아래 참고 클로저를 사용하여 (분리하는데) 기준이 되는 문자를 구체적으로 정의할 수 있다. (활용도가 좋아짐) // CharacterSet 사용 불가 maxSplit 매개변수를 사용하여 최대 분리될 수 있는 횟수를 정해줄 수 있다. (default : Int.max) omittingEmptySubsequencece 매개변수는 Bool을 입력받는다. (= 빈 시퀸스 생략) true : 비어있지 않은(non-empty) 서브 시퀸스만 반환한다. (기본값) false : separator..
QoS는 동시성 프로그래밍에서 Queue의 서비스 품질을 의미한다. 6가지 종류가 있고, 기본값인 default를 가장 많이 사용한다. 우선순위가 높을수록 더 많은 스레드를 사용하고, 배터리를 집중적으로 소모한다. 서비스 품질 수준 사용 상황 소요 시간 .userInteractive 유저와 직접 인터렉티브 : UI 업데이트 관련 거의 즉시 .userInitiated 유저에게 즉시 필요하지만, 비동기적으로 처리된 작업 ex) 로컬 데이터베이스 읽기 n초 .default 일반적인 작업 - .utility Indicator와 함께 길게 실행되는 작업 ex) Networking n초 ~ n분 .background 유저가 직접적으로 인지하지 않고, 소요시간이 중요하지 않은 작업 ex) 데이터 미리 가져오기, DB..
문제설명 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 let input: Int = Int(readLine()!)! var inputArray: [[Int]] = [] var count: Int = 0 for _ in 1...input { inputArray.append(readLine()!.split(separator: " ").map({Int($0)!})) } inputArray.sort(by: { if $0[1] == $1[1] { return $0[0] < $1[0] }else { return $0[1] < $1[1] } }) var curre..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kI5DO/btryPCFFBXc/0Xh0MaAaotnkPd3ff4rTkK/img.jpg)
유튜브처럼 일부 앱의 경우에는 특정 탭바를 버튼처럼 사용하는 경우가 있다. 일단 큰 줄기(?)를 보자면 1. 버튼으로 사용하려는 탭바의 기능(View가 전환되는 기능)을 작동하지 않도록 만든다. 2. 탭바 버튼으로 작동할 기능을 작성한다. 3. 탭바 버튼에 사용할 이미지를 적용한다. 그러하다.. 이런 느낌? 탭바 버튼 만들기 1. TabBarController에 5개의 ViewController를 연결한다. (탭바 버튼으로 사용할 View 포함) 2. 탭바 컨트롤러에 적용할 CustomTabBarController를 생성하고, 탭바 컨트롤러의 클래스를 CustomTabBarController로 설정해준다. class CustomTabBarController: UITabBarController { over..
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 풀이 1 (58점, 부분성공) - 64ms // 도시의 수 let input: Int = Int(readLine()!)! // 도시간 거리 var distanceArray: [Int] = readLine()!.split(separator: " ").map({Int($0)!}) // 도시의 기름값 var priceArray: [Int] = readLine()!.split(separat..