๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Swift) ์—ฐ์‚ฐ์ž == ์™€ === ์˜ ์ฐจ์ด == ์—ฐ์‚ฐ์ž a == b: a์˜ ๊ฐ’๊ณผ b์˜ ๊ฐ’์ด ๊ฐ™์€์ง€ ๊ฐ’์„ ๋น„๊ต let value1 = 1 let value2 = 2 print(value1 == value2) // false === ์—ฐ์‚ฐ์ž a === b: a๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์™€ b๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ™์€์ง€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋น„๊ต let p1 = Person(id: 1, name: "kim") let p2 = Person(id: 1, name: "kim") let p3 = p1 print(p1 === p2) // false print(p1 === p3) // true `==`๋Š” stack ์˜์—ญ์˜ ๊ฐ’์„ ๋น„๊ต, `===`๋Š” heap ์˜์—ญ์˜ ๊ฐ’์„ ๋น„๊ต ์ฐธ๊ณ ์ž๋ฃŒ https://developer.apple.com/documentation/swift/=.. 2022. 9. 24.
@State, @Binding , @ObservedObject, @Published, @StateObject, @EnvironmentObject @State SwiftUI๋Š” state๋กœ ์„ ์–ธํ•œ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌ @State๋ฅผ ์•ž์— ์ถ”๊ฐ€ํ•˜๋ฉด SwiftUI๊ฐ€ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ observeํ•˜๊ณ  ํ•ด๋‹น state๋ฅผ ์‚ฌ์šฉํ•˜๋Š” view๋ถ€๋ถ„์„ ์—…๋ฐ์ดํŠธ view ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ํ•ด๋‹น view์˜ state ํ”„๋กœํผํ‹ฐ๋Š” ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” swiftui์™€ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ•ญ์ƒ stateํ”„๋กœํผํ‹ฐ๋ฅผ private์œผ๋กœ ์„ ์–ธ @Binding // ๋ถ€๋ชจ view struct PlayerView: View { var episode: Episode @State private var isPlaying: Bool = false var body: some View { VStack { Text(episode.title) .foregroundSt.. 2022. 9. 13.
Unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.4.1. iOS 15.4.1 ๋ฒ„์ „์—์„œ App Tracking Transparency permission request ํ”„๋กฌํ”„ํŠธ ์ฐฝ์ด ๋œจ์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์œ ๋กœ ์•ฑ ์‹ฌ์‚ฌ๊ฐ€ ๊ฑฐ์ ˆ์ด ๋‚ฌ์—ˆ๋˜ ์ด์Šˆ ๋ฆฌํฌํŠธ ์œ„์˜ ์‚ฌ์œ ๊ฐ€ ๊ธฐ์กด์— ๊ฑฐ์ ˆ๋‚ฌ์—ˆ๋˜ ์‚ฌ์œ ๋„ ์•„๋‹ˆ๊ณ , app tracking transparency ์ˆ˜์ •์‚ฌํ•ญ๋„ ์—†์—ˆ๊ณ , ํ…Œ์ŠคํŠธํฐ(iphone13 with ios 15.4.1)์—์„œ๋Š” ๋„์ €ํžˆ ๊ฑฐ์ ˆ ์‚ฌ์œ ๋ฅผ ์‹œํ˜„ ํ•ด๋ณผ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค .. ์ด๋ฆฌ์ €๋ฆฌ ์‚ฝ์งˆํ•ด๋ณธ๊ฒฐ๊ณผ, ios 14๋ฒ„์ „ ์ด์ƒ์—์„œ๋Š” ATTrackingManager.requestTrackingAuthorization ์„ ํ†ตํ•ด์„œ ์œ ์ €์—๊ฒŒ IDFA ์ ‘๊ทผ๊ถŒํ•œ์„ ํ”„๋กฌํ”„ํŠธ๋กœ ์š”์ฒญํ•ด์•ผํ•˜๋Š”๋ฐ ์˜ค๋ž˜๋œ ๋””๋ฐ”์ด์Šค ex) iphone6 with iOS 15.4.1 ์—์„œ๋Š” ์•ฑ์„ ์ง€์› ๋‹ค๊ฐ€ ์žฌ์„ค์น˜ํ•ด๋„ ๊ณต์‹๋ฌธ์„œ( h.. 2022. 5. 13.
Property Wrapper Property Wrapper A property wrapper adds a layer of separation between code that manages how a property is stored and the code that defines a property. For example, if you have properties that provide thread-safety checks or store their underlying data in a database, you have to write that code on every property. When you use a property wrapper, you write the management code once when you define.. 2022. 4. 28.
Xcode ๋ฒ„์ „๋ณ„ ์ง€์›๋˜๋Š” SDK ์ตœ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ์ง€์›๋˜๋Š” SDK Xcode ๋ฒ„์ „ํ•„์š”ํ•œ ์ตœ์†Œ OS SDK์•„ํ‚คํ…์ฒ˜๋ฐฐํฌ ๋Œ€์ƒ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐSwift Xcode ๋ฒ„์ „ ํ•„์š”ํ•œ ์ตœ์†Œ OS SDK ์•„ํ‚คํ…์ฒ˜ ๋ฐฐํฌ ๋Œ€์ƒ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ Swift Xcode 13.3 macOS Monterey 12 iOS 15.4 macOS 12.3 tvOS 15.4 watchOS 8.5 DriverKit 21.4 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32 iOS 9~15.4 iPadOS 13~15.4 macOS 10.9~12.3 tvOS 9~15.4 watchOS 7~8.5 DriverKit 19~21.4 iOS 12.4~15.4 tvOS 12.4~15.4 watchOS 7~8.5 Swift 4 Swift 4.2 Swift 5.6.. 2022. 4. 28.
self vs Self ์†Œ๋ฌธ์ž self ์ธ์Šคํ„ด์Šค ์ž์ฒด ์ ‘๊ทผ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์ฐธ์กฐ๊ฐ’ self๋Š” ์ฐธ์กฐ ํƒ€์ž… value type์—์„œ์˜ self๋Š” stack์˜์—ญ์— ์กด์žฌํ•˜๋Š” instance๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ reference type์—์„œ์˜ self๋Š” heap ์˜์—ญ์— ์กด์žฌํ•˜๋Š” instance๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ ๋Œ€๋ฌธ์ž Self Self๋Š” type๊ทธ ์ž์ฒด๋ฅผ ์˜๋ฏธ -> ํƒ€์ž…์„ ์ •์˜ํ• ๋•Œ ์‚ฌ์šฉ Self.self๋Š” type object๋ฅผ ์˜๋ฏธ -> ํƒ€์ž…์„ ๋„˜๊ธธ๋•Œ ์‚ฌ์šฉ protocol ๋‚ด๋ถ€์—์„œ์˜ Self ์˜๋ฏธ: protocol ์ž์‹ ์ด ์•„๋‹Œ, ์ž๊ธฐ ์ž์‹ ์„ ์ฑ„ํƒํ•œ ํƒ€์ž…์„ ์˜๋ฏธ Class์—์„œ์˜ Self ์˜๋ฏธ : ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž… ์ž์ฒด๋ฅผ ํ‘œํ˜„ ์ฐธ๊ณ ์ž๋ฃŒ https://ios-development.tistory.com/600 2022. 4. 27.