일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Structural Identity
- lazy 위험성
- 적절한 사용방법
- ios login
- Demystify SwiftUI
- Lifetime of SwiftUI
- Spring
- developer
- Identity
- lifecycle
- 보라색오류
- swift
- Quick Help
- Lazy
- lazy 사용
- view
- bounds이해
- WWDC21
- consuming a restful web service
- schemes
- spring guide
- Explict Identity
- native개발
- xml delegate
- TabBarItems
- Your app is missing support for the following URL schemes: your_ios_client_id
- git branch strategy
- frame이해
- Xcode
- ios
- Today
- Total
목록ios (12)
Dev_Dylan

공식문서에서 Lazy Property 위험하다는 주석이 달려있다. Note lazy 수식어가 표시된 프로퍼티는 여러 스레드에서 동시에 접근되고 프로퍼티가 아직 초기화되지 않은 경우 프로퍼티가 한 번만 초기화된다는 보장이 없습니다. 그래서 보장이 안되는 경우가 언제인가? 언제 두번이상 초기화 되고 이상하게 쓰일까? 왜 쓰면 안되는데?? 의문을 품고, 여러 스레드에서 동시에 접근될 때 정말 초기화가 잘 이루어지지 않는지 코드로 구현해 보았다. import Foundation class Example { lazy var myLazyProperty: String = { print("Initializing lazy property") return "Hello, Lazy! : \\(Int.random(in: 1....

URLSession을 사용해서 네트워킹을 할 때 URL로 HTTP 를 사용하게 된다면 아래와 같은 보라색 경고창(오류창)이 나옴 App Transport Security has blocked a cleartext HTTP connection to "ADDRESS" since it is insecure. Use HTTPS instead or add this domain to Exception Domains in your Info.plist. 오류 메세지 그대로 App Transport Security 에서 HTTP 통신을 막았다는 것. - 이는 APPLE에서 iOS9 에 도입된 보안기능. - HTTP 접속을 허용 할 수 있지만 앱 심사 통과가 안될 가능성이 있음. HTTP 가능하도록 설정 변경 1. App..

Frame, Bounds의 차이는 무엇일까? 기술면접에도 단골이기도 한 Frame, Bounds 일단 Frame과 Bounds의 차이 Frame Frame 은 해석하는 그대로 '틀' 이라고 생각하면 된다. 아래 화면처럼 디바이스의 그 자체 화면에 고정되어있는 픽셀이라고 생각하면 좋다! 마치 아래 사진처럼 우리가 가지고있는 디바이스 화면 자체를 좌표계라고 생각하면 된다. Frame은 아하! 하고 그냥 디바이스 자체 프레임 위치라고 생각하면 되는군아! 싶지만 그렇다면 Bounds는? 똑같은 경계라고 생각이 되긴한다. Bounds 생각해 봤을 때 가장 이해하기 쉬운 것이 Sky Cam (스카이 캠)을 생각해보면 좋을 것 같다. 스카이캠은 축구장에서 사용되는데 한번즘 축구를 보면서 위에서 내려보는 화면을 봤다면..

TabBarController는 ViewControllers에 ViewController를 담아주면 순서대로 탭바에 쌓이게 된다. 5개의 ViewController가 있을 때, 왼쪽부터 순서대로 적용이 된다. 위 사진처럼 App을 실행하게 된다면, 0번 index의 Tab이 먼저 보여진다. SelectedIndex를 사용하여 ViewDidLoad가 될 때(혹은 어떤 Action이 있을 때) 원하는 탭으로 보여질 수 있다. SelectedIndex var selectedIndex: Int { get set } 설정(set) 이 가능하기 때문에 원하는 Index로 변경해주면 된다. 아래와 같이 App실행시 가운데(3번째) Tab이 설정되게 하기위해서, 3번째 즉 index = 2로 설정해주면 된다 self...

MVC는 개체가 각각 Model, View, Controller 3가지중 하나의 역할을 하며, 서로 통신 하는 방식을 정의한다. 모델-뷰-컨트롤러 뷰컨트롤러에서의 View와 Controller의 역할을 모두한다. View 가 Model을 알면 안된다? 기본적인 MVC 구조 Action의 흐름 User 의 Action 입력 (User → View) Action을 Controller가 인지 (View → Controller) Controller가 사용자의 Action을 토대로 Model의 데이터를 조작(변경) (Controller → Model) Model이 변경됨에 따라 View를 update (Model → Controller → View Update) Model 특정 데이터를 캡슐화 데이터 조작 및 처..

ViewController에 버튼을 추가해서 배열에 담기 최초 StoryBoard 에서도 혹은, 코드로 UIButton을 선언해도 같은 오류가 난다. Cannot use instance member 'button' within property initializer; property initializers run before 'self' is available 오류 코드에 보면 [인스턴스 맴버인 버튼을 초기화 없이 사용 할 수 없다] 라고 나온다. Lazy 키워드로 해결 buttons 배열에 lazy를 사용해서 ERROR를 해결한다. lazy키워드를 이용해 동시에 호출되는 것을 방지한다. 즉, 각각의 button1,button2,button3 와 이를 포함하는 [buttons] 배열을 동시에 호출되지 않도..