iyOmSd/Title: iOS Think🤔 10

[iOS] 실제 디바이스가 없을 경우 할 수 있는 것과 없는 것

developer.apple.com/library/archive/documentation/IDEs/Conceptual/iOS_Simulator_Guide/TestingontheiOSSimulator/TestingontheiOSSimulator.html Testing and Debugging in Simulator Retired Document Important: The information in this document is deprecated in Xcode 9. For Xcode 9 and later, see Simulator Help by choosing Help > Simulator Help in Simulator. Testing and Debugging in Simulator Simulator ..

[iOS] Bounds 와 Frame의 차이점

간단히 요약하면 bounds: 자신만의 좌표시스템에서 view의 위치와 크기 frame: 슈퍼뷰의 좌표시스템에서 view의 위치와 크기 가 되겠죠? 이렇게만 들으면 잘 이해가 안될 수 도 있어요 자신의 좌표와 슈퍼뷰의 좌표가 뭐가 다른지 자세히 알아볼까요?? 기본적인 뷰구조는 이런식으로 rootView(흰색)안에 view1(주황색)안에 view2(갈색)가 있는 형태에요 현재 이렇게 보이는 상태에요 생성위치가 (x: 0, y: 0)이니까 모두 왼쪽상단에서부터 시작해요 이상태에서 view1의 frame을 움직여볼께요 frame은 슈퍼뷰 기준좌표계니까 30, 30을 이동한다고하면 view1(주황색)은 rootView(흰색)기준으로 (30, 30)을 이동한 상태가 되요 iOS좌표계는 x가 양수면 오른쪽 y가 양..

[iOS] WWDC16 Swift Performance - 성능 이해하기

Swift에서 사용하는 타입들은 값타입, 참조타입으로 나뉘고 그에따라 Stack, Heap에 구분되서 저장되요 값타입이고 Stack에 저장되는 Struct 참조타입이고 Heap에 저장되는 Class Struct 와 Class 아무거나 쓰면 안되나여..? ➡️ Swift에는 Stack과 Heap메모리 공간이 존재 ➡️ 값복사는 Stack에 참조복사시 Heap 메모리 사용 Struct 상속이 필요없는경우 Thread에서 Safe한값을 사용할 수 있음(복사한 값은 다른 변수에 전혀 영향을 주지 않음) 참조가아닌 복사를 원할 때 연관된 값을 하나의 데이터 타입으로 만들 때 Class Value보다 Identity가 중요한경우 -> 모든 변수에서 같은 상태갖고있음 상속이 필요한 경우 다형성을 이용한 타입캐스팅이 ..

[iOS] UIAlertController 참조과정

순환참조가 일어날것 같은 상황에 대해서 알아볼건데요! alert의 handler를 추가할 때 보면... alert의 action은 클로저인데 이 상황에서 self를 참조하면 개념상 순환참조가 일어날거 같잖아요? 우선 결론부터 말씀드리면 순환참조는 일어나지않아요!! 아무리 alert를 켯다껏다해도 메모리가 쌓여서 앱이 죽은 적이 없잖아요?? 한 번 생각해 볼까요!! let alert = UIAlertController(...) let action = UIAlertAction(...) { self.view = ... } alert.addAction(action) present(alert, animated: false, completion: nil) VC에서 alert를 생성해주고, action도 구현해서 a..

[iOS] initialization 생성자

스위프트에는 여러종류의 init이 있다는거 알고계셧나요? 객체를 생성할 때 제공되는 함수를 말하구요 생성자를 통해서 객체를 생성할 때 원하는 값을 설정해서 만들 수가 있어요 designated init custom init default init convenience init required init failable init memberwise init 이제부터 하나하나 위에서 언급한 init을 알아볼게요 designated init 지정된 초기화라는 뜻이에요 보통 지금까지 많이 봤던 init이에요 모든 class는 적어도 1개이상 가지고 있어야해요 선언되지않으면 default init함수가 제공되요 하지만 이때 저장프로퍼티가 있는데 초기화가 안되어있다면 불가능해요 class를 만들때 변수초기화를 꼭 해..

[iOS] Swift Memory - COW (Copy On Write)

COW 처음 들어보는 분들도 있을거에요 정의를 먼저 말하자면 수정(쓰기)가 일어날때 복사한다 라는 뜻이에요 스위프트의 CollectionType인 Array, Dictionary, Set에 적용되는 개념이에요 참조를 통해서 불필요한 복사를 줄여서 메모리를 좀 더 아껴쓸 수 있어요 예시로 알아볼까요?? let a = [1...30] let b = a 이런 코드가 있어요 그럼 일반적으로 생각해보면 a도 30개의 배열을 할당 받고 b도 30개의 배열을 할당 받을 거에요 그쵸?? 배열 인덱스당 하나의 메모리를 할당 받아요 자료구조 배울 때 배열 처음[0]과 다음[1]인덱스의 주소값이 달랐던게 새록새록 기억나시나요..? 인덱스하나당 메모리를 할당받아요 만약 1000개, 10000개, 100000....0개 라면?..

[iOS] Swift Event - Delegate, Notification, KVO란? (3/3)

2020/03/09 - [iyOmSd/Title: iOS Think🤔] - Swift Event - Delegate, Notification, KVO란? (2/3) 2020/02/25 - [iyOmSd/Title: iOS Think🤔] - Swift Event - Delegate, Notification, KVO란? (1/3) 앞서 게시글에서 Delegate, Notification에대해 알아봤어요!! 간단하게 다시 리마인드를 하자면 Delegate - 위임자, 대리자 Notification - broadcast 이벤트 엿죠?!? 이번 게시글에서는 마지막으로 KVO에 대해서 알아볼게요 KVO는 Key-Value Observing 의 약자에요 Objective-C 런타임에 의존하는 방식이구요 @objc d..

[iOS] Swift Event - Delegate, Notification, KVO란? (2/3)

이전 글에서는 2020/02/25 - [iyOmSd/Title: iOS Think🤔] - Swift Event - Delegate, Notification, KVO란? (1/3) Swift Event - Delegate, Notification, KVO란? (1/3) 제목에서 보는 모든 것들은 이벤트 처리관련 용어들 이에요 모두 이벤트를 처리해주지만 사용 방법이나 쓰이는 용도가 조금 달라요 '별 차이 없는데 아무거나 쓰지 뭐' 라는 생각을 할 수 있는데 iOS를 알아가는데.. nsios.tistory.com Delegate를 다뤄봤어요 이번에는 Notification을 다뤄볼거에요 Notification은... Notification Center 싱글턴 객체를 통해서 이벤트 발생여부 등록한 객체에게 po..

[iOS] Swift Event - Delegate, Notification, KVO란? (1/3)

제목에서 보는 모든 것들은 이벤트 처리관련 용어들 이에요 모두 이벤트를 처리해주지만 사용 방법이나 쓰이는 용도가 조금 달라요 '별 차이 없는데 아무거나 쓰지 뭐' 라는 생각을 할 수 있는데 iOS를 알아가는데 중요한 개념들 이라고 생각해요 아직도 명확하게 구분지어서 설명 할 수 없을 것 같아요 Delegate Swift좀 하셨다면 Delegate란 단어를 많이 들어 봤을거에요 위임자, 대리자 라는 뜻이 나오죠?? 이단어만 듣고는 정확히 어떤 느낌인지는 헷갈려요 대신해주는거구나 라는 느낌이지만 어떻게? 무엇을? 대신해주는지는 잘 감이안와요 흔히 쓰는 Delegate를 보면 TableViewDelegate, CollectionViewDelegate, 등 써본적이 있을거에요 이렇게만 놓고보면 아 TableVi..

[iOS] Swift Thread - Dispatch Queue, Operation Queue

[iOS] 회사 면접을 가게 되면 꼭 나오는 필수 질문이기도하고 쓰면서도 헷갈리고 비슷한데 뭐가다르지?? 고민한 적이 있었던 내용이에요 간단하게 요약하자면 Operation Queue Concurrent Operation객체를 구현할 필요없이 Operation을 Operation Queue에 제출하기만하면 Concurrent Operation객체를 만들어 줍니다 Dispatch Queue Operation을 하기에는 단순한 코드들 구현할 때 사용 DispatchQueue()처럼 그냥 새로만드는 객체로 만드는 큐는 Serial Queue Attribute를 줘야 Concurrent로 생성할 수 있어요 쓰레드 개념을 간단하게 설명하자면 Serial vs Concurrent Serial : 직렬처리 Concu..