분류 전체보기213 Structure의 immutability value 타입인 struct의 인스턴스는 let로 선언되는 경우, 내부의 변수가 var로 선언되어 있다 할지라도 해당 변수의 값을 변경할 수 없습니다. struct MyStruct { var id: Int } let structA = MyStruct(id: 0) structA.id = 1 // Error: Cannot assign to property: 'structA' is a 'let' constant struct 인스턴스 자체를 var로 선언해야만 내부 값을 변경할 수 있습니다. 왜 그럴까? 이는 struct가 value 타입인 것과 연관이 있습니다. value 타입인 struct는 내부의 변수 값이 변경될 때, 기존의 인스턴스의 값이 변하는 것이 아니라 마치 새로운 인스턴스가 생성되는 것 처럼 .. 2024. 4. 21. 저장프로퍼티를 extension에 정의할 수 없는 이유 Extension은 class, struct, protocol, enum에 사용이 가능한 기능으로, 기존 타입에 새로운 기능을 추가하도록 도와줍니다. 직접적인 코드 접근 권한이 없는 프레임워크나 라이브러리 등의 기능을 확장할 수 있게 해주어 매우 유용하게 사용이 됩니다. 이런 extension에는 저장 프로퍼티를 사용할 수 없다는 제한이 있습니다. 그 이유는 기존 타입의 추가적인 메모리를 사용할 수 없다는 특성 때문입니다. 기존 타입의 추가적인 메모리를 사용하면, compile 시 instance를 생성할 때 문제를 일으킬 수가 있다고 합니다. 저장 프로퍼티는 추가적인 메모리를 요구하는 프로퍼티이기 때문에 compile 시 문제를 야기하게 되고, 그렇기 때문에 extension 내부에 저장이 불가능 합니.. 2024. 4. 8. super.viewDidLoad를 호출하는 이유 ViewController를 만들 때 기본적으로 구현되어 있는 코드이기 때문에 아무런 생각 없이 호출하던 super.viewDidLoad(). 왜 꼭 호출해야 하는 것인지 문득 궁금해져서 알아보게 되었습니다. (viewDidLoad로 특정지었지만 viewWillAppear나 viewDidAppear 등등 여러 override 메서드들에 모두 해당되는 이야기입니다.) SO에도 몇몇 해당 질문들이 있었는데, 'super.viewDidLoad() 메서드를 호출하지 않아도 아무런 문제가 없고 호출했을 때와 차이가 없다. 그런데 왜 꼭 호출을 해야하는가?'를 문의하는 글들이었습니다. 그 중에 가장 저에게 와닿았던 답변은 이러했습니다. Also, let's say you have some view controlle.. 2024. 3. 21. XCodeCloud & FirebaseSDK 버전 호환오류: Missing Info.plist value...bundle XXX.app/Frameworks/FirebaseAnalytics.framework is required. Firebase SDK 버전이 10.21로 올라가면서 XCodeCloud로 빌드 시에 아래와 유사한 오류가 발생하게 되었음. Error Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle XXX.app/Frameworks/FirebaseAnalytics.framework is required. Error Invalid Bundle. The bundle XXX.app/Frameworks/FirebaseAnalytics.framework does not support the minimum OS Version specified in the Info.plist. Error The bundle 'Payload/XXX.app/Fram.. 2024. 3. 17. Struct에서 mutating function을 사용하는 이유 struct를 사용하다보면, 내부에 정의된 프로퍼티 값을 변경하는 function을 정의하는 것은 기본적으로 제한되어 있습니다. 프로퍼티가 var여도 마찬가지 입니다. struct MyStruct { var name: String { willSet { print(newValue) } } func changeName(_ newName: String) { self.name = newName //error: cannot assign to property: 'self' is immutable } } 이는 struct의 기본적인 특징을 알면 왜 그런지 이해하기 쉽습니다. struct는 class와 다르게 struct가 constant로 정의된 경우에 내부 프로퍼티가 var일지라도 변경이 불가능한 특징이 있습니다... 2024. 2. 8. 앱 배포 후 운영 중 회고 작년 말 다이나믹 아일랜드에 날씨 정보를 아이콘과 숫자로 보여주는 날씨 앱을 배포하였습니다. https://apps.apple.com/us/app/weather-island/id6474068474 Weather Island *Weather Island* Use weather icons on Dynamic Island to stay updated with the weather. Key Features: * Hourly and 10-Day Forecasts: Get reliable weather predictions at your convenience. Our app provides hourly updates and an extended 10-day forecast, en apps.apple.com 벌써.. 2024. 2. 7. 이전 1 2 3 4 5 ··· 36 다음 반응형