| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- SPM
- mangle
- Swift
- IOS
- ios바이너리분석
- Architecture
- 다이나믹링크분석
- ciimage
- applaucnchprocess
- swift-demangle
- 뷰를그리는메서드
- 이진삽입정렬
- Xcode
- swift6.1
- displayscale
- swiftconcurrency
- XCUITest
- actor
- xcrun swift-demangle
- updatecycle
- 뷰의레이아웃을계산하는메서드
- swift6
- mach-o파일분석
- modulararchitecture
- cgimage
- uicollectionview
- UIKit
- WWDC24
- task
- mainrunloop
- Today
- Total
목록분류 전체보기 (50)
꾸준한 기록
1️⃣ app.coordinate(withNormalizedOffset:) 의 역할XCUIApplication 혹은 XCUIElement 객체에서 이 메서드는 해당 요소의 상대적 좌표계를 기준으로 한 터치 지점(XCUICoordinate)을 반환합니다.즉, 화면에서 특정 위치를 정확히 지정해 터치나 드래그를 수행할 때 사용합니다.let element = app.otherElements["canvas"]let start = element.coordinate(withNormalizedOffset: CGVector(dx: 0.1, dy: 0.5))let end = element.coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.5))start.press(fo..
값 비교 vs 식별자( 메모리 주소값) 비교필드 값을 같을 때, 둘을 같다고 보면 이는 해당 타입을 값 으로 취급하는 것이다.연산자별 동작== : 값 비교===: 식별자 비교-> 내가 이 객체를 값으로 볼 건지, 객체로 볼건지를 결정해야 한다.객체로 본다면? 식별자를 가지고 구분값으로 본다면? 내부 값을 가지고 구분객체지향에서는 값을 쓰지 않는다.원칙적으로 객체 지향에서는 식별자를 가지고 객체를 인식해야 한다. 함수형프로그램잉에서는 값 지향을 지향한다.프로토콜 oriented도 값 지향을 지원한다.객체 지향에서는 다형성이 지원되어야 한다.Swift를 이용해서 객체지향으로 시스템을 구현할 수 있다.다형성이 무엇인가?다형성의 조건Substitution: 대체가능성: 자신이 더 다양한 타입으로 대체될 수 있다..
1. Actor는 순서가 중요한 비동기작업에는 적합하지 않다.- 순서가 중요한 비동기 작업에는 GCD를 사용해야 한다.- Actor는 priority inversion을 해결하기 위해, actor에서 실행되는 작업의 순서를 변경할 수도 있기 때문이다.- 출처: Swift Evolution 제안서 SE-0306Implementation note: At an implementation level, the messages are partial tasks (described by the Structured Concurrency proposal) for the asynchronous call, and each actor instance contains its own serial executor (also in t..
Language and Standard Library1. nonisolated 키워드를 extension과 type에 추가할 수 있게 되었습니다.이전까지는 프로퍼티나 메서드 단위로 추가해야 했는데, type 단위로도 추가할 수 있게 되어서 편리해졌습니다.@MainActorstruct S { let id: Int let name: String // mutable state and MainActor methods}/// extension 단위로 추가할 수 있게 됨nonisolated extension S: CustomStringConvertible, Equatable { var description: String { "id: \(id), name: \(name)" } static func =..
SPM 매니페스트의 resources 파라미터에는 다음 두 가지 규칙을 사용할 수 있습니다. 1. process(_ path: String, localization: Localization? = nil)대상 플랫폼에 맞춰 리소스를 처리(process) 합니다.이미지 최적화, 스토리보드·XIB 컴파일, Core Data 모델 처리 등을 자동으로 수행합니다.지원되지 않는 파일 형식은 기본적으로 복사(copy)합니다.디렉토리를 지정하면 내부 파일을 재귀적으로 처리합니다.사용 예시.target( name: "MyLib", resources: [ .process("Resources"), // 전체 Resources 폴더 처리 .process("Localizable.s..
UIScrollViewUIColllectionViewLayout공식문서 정의content view의 사이즈 UICollectionView의 내부 content 사이즈 (보이지 않는 부분을 포함)이 값을 이용해서 UICollectionView에서 스크롤을 할 수 있는 공간의 사이즈를 정의한다.invalidateLayout() 호출 직후, 올바르 contentSize를 얻을 수 있는지 유무OX값이 정해지는 시점frame이 계산된 후 레이아웃 계산 후 용도스크롤 동작에서 사용됨 (offset 의 기준이 되는 값)레이아웃 사이즈를 계산하기 위해 사용됨(cell 사이즈를 계산하기 위해 사용됨) 두 값에 차이가 생기는 시점1. 레이아웃 계산은 되었지만, 화면에 반영되지 않은 시점- UICollectionViewLa..
displayScale이란?점(point) 한개를 그리는데 사용되는 디바이스 스크린의 pixel 개수 여기서 말하는 pixel은 디바이스 스크린을 구성하고 있는 물리적인 pixel 을 말한다. 그렇다면 이미지 정보에서 확인할 수 있는 400x600은 무엇일까? 이것 또한 이미지를 구성하는 pixel 의 개수를 나타낸다. 즉 가로로는 pixel 400개를 사용하며 세로로는 pixel 600개를 사용해서, 총 2400 개의 pixel 을 사용한다는 의미이다. 그렇다면 400x600 크기의 이미지를 100x200 사이즈의 imageView로 보여줄 때는 pixel 몇개를 사용하는가?100x200 = 2000개의 픽셀을 사용한다. 2400개의 픽셀을 사용하는 이미지가 2000개를 사용하도록 downscaling..
1. CIImage와 CGImage 차이 내부 동작 차이UIImage(ciImage:)CIImage 인스턴스를 생성해두고, UIImage가 그것을 참조하고 있는 형태이다.UIImage가 UIImageView에 의해서 display될 때 (UIImageView가 그려질 때), CIImage가 렌더링된다.(CIImage에 적용한 필터나 변형도 이때 적용된다.)따라서 CIImage에 적용한 필터나 변형이 예상대로 출력되지 않을 수 있다. (특히, UIKit의 drawiing 작업과 겹치거나 color space 이슈가 있는 경우에 예상대로 이미지가 출력되지 않을 수 있다.)UIImage(cgImage:)CGImage는 인스턴스가 생성되었을 때 이미 렌더링된다 상태이다. 따라서 UIImageView나 CALy..
otoolMach-O 바이너리 파일의 구조를 분석해서 다양한 정보를 알 수 있다.Mach-O 파일이란? MacOS, iOS 에서 실행 파일, 프레임워크, 라이브러리 등이 사용하는 파일 포맷알 수 있는 정보 바이너리 파일의 각 섹션과 세그먼트에 대한 정보-L : 바이너리와 링크된 동적 라이브러리/프레임워크의 경로-l : Mach-O 파일에 포함된 모든 로드 명령어-T: 바이너리 파일에 포함된 심볼테이블 -t: 바이너리의 코드 섹션을 어셈블리어로 출https://llvm.org/docs/CommandGuide/llvm-otool.htmlhttps://keith.github.io/xcode-man-pages/llvm-otool.1.html nm Mach-O 바이너리 파일의 심볼테이블을 출력하는 명령어심볼테이..
다이나믹 라이브러리에서 외부로 export 하는 심볼을 확인할 때 `swift-demangle` 이라는 옵션을 같이 사용한다.만일 `swift-demangle` 옵션을 사용하지 않으면, 심볼이 mangle되어서 심볼이 어떤 타입을 나타내는지 읽기 어렵다. 아래에 mangle된 심볼 모습을 보면 알아보기 힘든 형태로 되어있다. 동일한 것을 `swift-demangle` 옵션을 붙여서 심볼을 demangle 시키면 훨씬 보기 쉬운 것을 확인할 수 있다.UserDTO라는 것을 알가보기가 훨씬 더 쉽다. 그렇다면 왜 mangle 되는 것일까?symbol이 어떤 타입인지를 symbol의 이름 안에 같이 담는 것이다. 이를 통해서 Swift는 런타임에 오버로딩된 함수들을 구별할 수 있다. 또한 다이나믹 링커가 정확..