[iOS, Swift] 객체 참조 카운트 구하기 iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. let object: CustomClass = CustomClass() let count = CFGetRetainCount(object) print("CFGetRetainCount = \(count)") iOS/코드조각 2022.11.24
[iOS, Swift] 코드를 수행하는 시간 구하기 iOS 16, Xcode 14.01, Swift 5, UIKit 환경에서 진행했습니다. let start = CFAbsoluteTimeGetCurrent() // code... let diff = CFAbsoluteTimeGetCurrent() - start print("diff = \(diff)") iOS/코드조각 2022.11.23
[iOS, Swift] 객체의 메모리 주소 찾기 iOS 16, Xcode 14.01, Swift 5, UIKit 환경에서 진행했습니다. func address(of object: UnsafeRawPointer) -> String { let address = Int(bitPattern: object) return String(format: "%p", address) } var dog: Animal = Animal() // 객체 선언 및 초기화 address(of: &dog) 객체가 어느 메모리를 할당하고 싶은지 찾고 싶을 때 위와 같은 함수와 호출을 통해 메모리 주소 값을 확인할 수 있다. iOS/코드조각 2022.11.23
[iOS, Swift] 현재 쓰레드 이름 찾기 iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. extension Thread { var threadName: String { if let currentOperationQueue = OperationQueue.current?.name { return "OperationQueue: \(currentOperationQueue)" } else if let underlyingDispatchQueue = OperationQueue.current?.underlyingQueue?.label { return "DispatchQueue: \(underlyingDispatchQueue)" } else { let name = "undefined" return String(cStri.. iOS/코드조각 2022.11.02
[iOS, Swift] localized 다국어 지원(Extension) iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. extension String { var localized: String { return NSLocalizedString(self, tableName: "Localizable", value: self, comment: "") } } String Extension 설정 "Hello".localized Localized 사용방법 iOS/코드조각 2022.10.27
[iOS, Swift] 앱 내의 파일 확인하기 (FileManager) iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다 FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 위의 코드 위치에다 파일을 저장하게 되면 앱 내의 폴더에 이미지나 비디오가 저장이 된다. 그런데 저장만 하고 info.plist 파일에 설정을 안 해주면 아이폰에서 확인이 불가하다. info.plist 설정을 추가하자 Supports opening documents in place - YES Application supports iTunes file sharing - YES iOS/코드조각 2022.10.24
[iOS, Swift] 화면 세로로 고정하기 iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. 개발 핸드폰 설정을 화면전환이 안 되게끔 설정해놓아 개발 당시에는 몰랐었는데, 다른 핸드폰으로 사용을 해보니 화면이 전환되며 짜놓은 Layout이 아닌 다른 상태로 바뀌었다. 그리하여 아래와 같은 코드와 설정을 바꿔주어 화면전환이 안 되게끔 설정을 했다. AppDelegate.swift에서 supportedInterfaceOrientationFor 함수를 만든다. bebelucy - target - Info 화면에서 Supported Interface orientations 설정에서 Landscape 부분을 삭제한다. 위의 설정을 변경하여 iPhone은 화면전환이 안 되었지만, iPad에서는 화면전환이 안 되어서 .. iOS/코드조각 2022.10.18
[iOS, Swift] 아이폰, 아이패드 디바이스 확인방법 iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. iPhone과 iPad 코드를 구분하기 위해 아래와 같이 UIDevice Extension을 통하여 현재 빌드되는 기기가 iPhone인지 iPad인지 구분을 할 수 있다. import UIKit extension UIDevice { public var isiPhone: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone { return true } return false } public var isiPad: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom... iOS/코드조각 2022.10.18
[iOS, Swift] NSLayoutConstraint Multiplier 수정하기 iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. NSLayoutConstraint의 multiplier 값을 변경하려고 보니 Only-get으로만 값을 받을 수 있고, 값을 설정할 수가 없었다. 그래서 구글링을 해본 결과 스택오버플로우에서 Constraint 값을 제거하고, 새로운 Constraint를 설정해줄 때 multiplier 값을 변경하여 등록해주는 코드를 발견했다. 밑의 코드를 참고하면 된다. import UIKit extension NSLayoutConstraint { func setMultiplier(multiplier: CGFloat) -> NSLayoutConstraint { NSLayoutConstraint.deactivate([self]) .. iOS/코드조각 2022.10.18
[iOS, Swift] 텍스트뷰 라인 수 제한하기 iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다. textView.textContainer.maximumNumberOfLines = 1 textView.textContainer.lineBreakMode = .byTruncatingTail textView 안의 textContainer 설정을 바꿔줌으로 라인 수를 조절할 수 있다. iOS/코드조각 2022.10.13