๐ฑ iOS
-
ํ์ฌ์ฑ์ ์ ์์ ํต์ ์ฌ์ด๋ฆ์ ์๋ฒ๋ก ๋๊ฒจ์ฃผ๊ณ ์์๋๋ฐ, iOS 16.4.1 ๋ฒ์ ๋ถํฐ ํต์ ์ฌ ์ด๋ฆ์ ๋ฆฌํดํด์ฃผ๋ CTCarrier ํด๋์ค๊ฐ Deprecated๋์๋ค. (์ฌ์ค 16๋ถํฐ์ง๋ง 16.4.1๋ถํฐ Deprecated๊ฐ ์ ์ฉ๋์๋ค) ์ ํ ํฌ๋ผ์ ํตํด ํ์ธํ๋, ๋ณด์์์ ๋ฌธ์ ๋ก ํต์ ์ฌ ์ ๋ณด๋ฅผ get ํ ๋งํ ๋์ฒด ํด๋์ค ์์ด!!! Deprecated ํ๋ค๊ณ ๋ต๋ณ์ด ์์๋ค. ๋ฐ๋ผ์ ํต์ ์ฌ ์ด๋ฆ์ ์ป๋๊ฑด ํฌ๊ธฐํ๊ณ , ์ ์ํ ์์ดํฐ์ด ๊ฐํต๋ ํด๋ํฐ์ด ๋ง๋์ง๋ฅผ ํ์ธํ๊ธฐ๋ก ํ๋ค. (๋ณด์์์ ์ด์ ) # ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ๋ง๊ธฐ ๊ธฐ์ง๊ตญ ์ฌ์ด์ ๋ฌด์ ์ ์(RadioAccessTechnology)์ ํ์ธํ์ฌ ๊ณต๊ธฐ๊ณ์ธ์ง, ์ ํจํ Usim์ธ์ง ์ฒดํฌํ๊ธฐ๋ก ํ๋ค. # ServiceCurrentRadioAccessTechnology์ ์ข ๋ฅ ..
(iOS) ํต์ ์ฌ ์ ๋ณด CTCarrier Deprecated ์ด์ iOS 16.4.1~ํ์ฌ์ฑ์ ์ ์์ ํต์ ์ฌ์ด๋ฆ์ ์๋ฒ๋ก ๋๊ฒจ์ฃผ๊ณ ์์๋๋ฐ, iOS 16.4.1 ๋ฒ์ ๋ถํฐ ํต์ ์ฌ ์ด๋ฆ์ ๋ฆฌํดํด์ฃผ๋ CTCarrier ํด๋์ค๊ฐ Deprecated๋์๋ค. (์ฌ์ค 16๋ถํฐ์ง๋ง 16.4.1๋ถํฐ Deprecated๊ฐ ์ ์ฉ๋์๋ค) ์ ํ ํฌ๋ผ์ ํตํด ํ์ธํ๋, ๋ณด์์์ ๋ฌธ์ ๋ก ํต์ ์ฌ ์ ๋ณด๋ฅผ get ํ ๋งํ ๋์ฒด ํด๋์ค ์์ด!!! Deprecated ํ๋ค๊ณ ๋ต๋ณ์ด ์์๋ค. ๋ฐ๋ผ์ ํต์ ์ฌ ์ด๋ฆ์ ์ป๋๊ฑด ํฌ๊ธฐํ๊ณ , ์ ์ํ ์์ดํฐ์ด ๊ฐํต๋ ํด๋ํฐ์ด ๋ง๋์ง๋ฅผ ํ์ธํ๊ธฐ๋ก ํ๋ค. (๋ณด์์์ ์ด์ ) # ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ๋ง๊ธฐ ๊ธฐ์ง๊ตญ ์ฌ์ด์ ๋ฌด์ ์ ์(RadioAccessTechnology)์ ํ์ธํ์ฌ ๊ณต๊ธฐ๊ณ์ธ์ง, ์ ํจํ Usim์ธ์ง ์ฒดํฌํ๊ธฐ๋ก ํ๋ค. # ServiceCurrentRadioAccessTechnology์ ์ข ๋ฅ ..
2023.05.10 -
2023. 4. 25. ๋ฌธ์ Custom TabBar์ NavigationBar ๋ฅผ ๋ง๋ค์ผ์ด ์๊ฒผ๋๋ฐ VC์ ๋ฟ๋๋ถ๋ถ์ ์๊พธ Border? Shadow? ๊ฐ์ ์ค์ด ํ๋ ์๊ธด๋ค. Hierarchy๋ฅผ ๋ณด๋ ์ต์์ ๊ณ์ธต์ ๊น๋ง ImageView๊ฐ ๋ฌ๋ค. ๊ทธ๋์ ๊ตฌ๊ธ๋ง์ ์ข ํด๋ณด๋ UINavigationBarAppearance ๊ฐ์ฒด์ backgroundImage ํ๋กํผํฐ์ shadowImageํ๋กํผํฐ์ ๋น ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ํ๋๋๋ก ์์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ธ์ ๋ณด์๋ค. if #available(iOS 13.0, *) { let appearance = UINavigationBarAppearance() appearance.backgroundImage = UIImage() appearance.shadowImage..
(iOS) UITabBar, UINavigationBar shadow ์ ๊ฑฐ, border ์ ๊ฑฐ2023. 4. 25. ๋ฌธ์ Custom TabBar์ NavigationBar ๋ฅผ ๋ง๋ค์ผ์ด ์๊ฒผ๋๋ฐ VC์ ๋ฟ๋๋ถ๋ถ์ ์๊พธ Border? Shadow? ๊ฐ์ ์ค์ด ํ๋ ์๊ธด๋ค. Hierarchy๋ฅผ ๋ณด๋ ์ต์์ ๊ณ์ธต์ ๊น๋ง ImageView๊ฐ ๋ฌ๋ค. ๊ทธ๋์ ๊ตฌ๊ธ๋ง์ ์ข ํด๋ณด๋ UINavigationBarAppearance ๊ฐ์ฒด์ backgroundImage ํ๋กํผํฐ์ shadowImageํ๋กํผํฐ์ ๋น ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ํ๋๋๋ก ์์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ธ์ ๋ณด์๋ค. if #available(iOS 13.0, *) { let appearance = UINavigationBarAppearance() appearance.backgroundImage = UIImage() appearance.shadowImage..
2023.04.25 -
PNG, JPEG๋ฑ์ ์ฌ๋ฌ๊ฐ์ง Image Asset๋ค์ ์๊ฐ์์ด ๋ค๋ฃจ์๋๋ฐ ๋ฌด์จ ์ฐจ์ด์ผ๊น ๊ฐ์๊ธฐ ๊ถ๊ธํด์ก๋ค. ๋จ์ํ ํ๊ฒฝ, ์ธ๋ฌผ๋ฑ ์ฌ์ง์ ๊ดํ๊ฑด JPEG๊ฐ ๋ง๊ณ , ๋ฒํผ์ด๋ ํฐํธ ๋ฑ์ UI ์์ ๋ค์๋ PNG๊ฐ ๋ง๋ค๊ณ ๋ง ์๊ฐํ๊ณ ์์๋ค. ์ผ๋จ JPG์ PNG ๋ชจ๋ ๋ฒ์ฉ์ ์ผ๋ก ๋ง์ด ์ฐ์ด๋ ๋์งํธ ์ด๋ฏธ์ง ๊ท๊ฒฉ์ค ํ๋์ด๋ค. ์ ๊ทธ๋ฆฌ๊ณ JPG == JPEG ์ด๋ค. PNG ์น ํ๊ฒฝ์์ ์ต์์ ๋นํธ๋งต ์ด๋ฏธ์ง๋ฅผ ๊ตฌํํ๊ธฐ ์ํด W3C์์ ์ ์ ํ ํ์ผ ํฌ๋งท์ด๋ค. GIF์ ๋์์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, GIF๋ณด๋ค ์์ ์ฉ๋์ผ๋ก๋ ์ด๋ฏธ์ง ํํ์ด ๊ฐ๋ฅํ๊ณ ์๋ณธ ์ด๋ฏธ์ง์ ์์์ ์ ํ ์ฃผ์ง ์๋ ์์ถ๊ณผ ์ํ ์ฑ๋์ ์ง์ํ๋ค. JPG(JPEG) JPEG์์ํ์ ์ํด ๊ฐ๋ฐ๋์๋ค. ํ ์ปฌ๋ฌ์ ๊ทธ๋ ์ด ์ค์ผ์ผ์ ์์ถ์ ์ํ์ฌ ๊ณ ์๋์๊ณ , ์ฌ์ง์ด๋ ์..
์ด๋ฏธ์ง ํ์ผ์ ์ข ๋ฅ (PNG , JPG, JPEG)PNG, JPEG๋ฑ์ ์ฌ๋ฌ๊ฐ์ง Image Asset๋ค์ ์๊ฐ์์ด ๋ค๋ฃจ์๋๋ฐ ๋ฌด์จ ์ฐจ์ด์ผ๊น ๊ฐ์๊ธฐ ๊ถ๊ธํด์ก๋ค. ๋จ์ํ ํ๊ฒฝ, ์ธ๋ฌผ๋ฑ ์ฌ์ง์ ๊ดํ๊ฑด JPEG๊ฐ ๋ง๊ณ , ๋ฒํผ์ด๋ ํฐํธ ๋ฑ์ UI ์์ ๋ค์๋ PNG๊ฐ ๋ง๋ค๊ณ ๋ง ์๊ฐํ๊ณ ์์๋ค. ์ผ๋จ JPG์ PNG ๋ชจ๋ ๋ฒ์ฉ์ ์ผ๋ก ๋ง์ด ์ฐ์ด๋ ๋์งํธ ์ด๋ฏธ์ง ๊ท๊ฒฉ์ค ํ๋์ด๋ค. ์ ๊ทธ๋ฆฌ๊ณ JPG == JPEG ์ด๋ค. PNG ์น ํ๊ฒฝ์์ ์ต์์ ๋นํธ๋งต ์ด๋ฏธ์ง๋ฅผ ๊ตฌํํ๊ธฐ ์ํด W3C์์ ์ ์ ํ ํ์ผ ํฌ๋งท์ด๋ค. GIF์ ๋์์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, GIF๋ณด๋ค ์์ ์ฉ๋์ผ๋ก๋ ์ด๋ฏธ์ง ํํ์ด ๊ฐ๋ฅํ๊ณ ์๋ณธ ์ด๋ฏธ์ง์ ์์์ ์ ํ ์ฃผ์ง ์๋ ์์ถ๊ณผ ์ํ ์ฑ๋์ ์ง์ํ๋ค. JPG(JPEG) JPEG์์ํ์ ์ํด ๊ฐ๋ฐ๋์๋ค. ํ ์ปฌ๋ฌ์ ๊ทธ๋ ์ด ์ค์ผ์ผ์ ์์ถ์ ์ํ์ฌ ๊ณ ์๋์๊ณ , ์ฌ์ง์ด๋ ์..
2022.04.18 -
๊ฐ๋ฐ์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉด ๋ค์์ ๋ด์ฉ์ด ์๋ค. Declaration โ์ฑ์ UI์ View์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด์ ๋ํ ๋ฐฐ๊ฒฝ์ด๋ค.โ ์ฌ๊ธฐ๊น์ง๋ง ์ฝ์์๋๋ ๊ฐ์ด ์์จ๋ค. ์์ธํ๊ฒ ๋งํ๋ฉด UIKit์ ๋์ ๋ฐฉ์์ View ํผ์์๋ง ์ด๋ฃจ์ง์ ์๊ณ , ๋ค๋ฅธ ๊ฐ์ฒด๋ค๊ณผ ํจ๊ป ์ด๋ฃจ์ง๋ค. ์ด๋ UIWindow ๋ ์ผ๋ถ ์ฐธ์ฌํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ญ๊ฐ UIWindow๊ฐ UIView๋ณด๋ค ์์ํด๋์ค์ผ๊ฑฐ๋ผ๋ ์ด๋ฏธ์ง๊ฐ ์์๋๋ฐ ๋ฐ๋์๋ค UIWindow๋ UIView์ ํ์ ํด๋์ค๋ค. UIWindow์ ์๊ฐ์ ์ญํ UIWindow์ ์ญํ ์ View๋ฅผ ๋ํ๋ด๋ โ์ก์" ์ญํ ์ด๋ค.(๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ด๋ ์ปจํ ์ด๋) ๋ฐ๋์ UIWindow๊ฐ ์์ด์ผ ํ๋ฉด์ View๋ค์ ๋์คํ๋ ์ด ํ ์ ์๋ค. window๊ฐ ์ก์๋ผ๋ฉด, ๋ด๋ถ์ ๊ทธ๋ฆผ์ rootVie..
(iOS) UIWindow ์ ๊ดํ์ฌ๊ฐ๋ฐ์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉด ๋ค์์ ๋ด์ฉ์ด ์๋ค. Declaration โ์ฑ์ UI์ View์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด์ ๋ํ ๋ฐฐ๊ฒฝ์ด๋ค.โ ์ฌ๊ธฐ๊น์ง๋ง ์ฝ์์๋๋ ๊ฐ์ด ์์จ๋ค. ์์ธํ๊ฒ ๋งํ๋ฉด UIKit์ ๋์ ๋ฐฉ์์ View ํผ์์๋ง ์ด๋ฃจ์ง์ ์๊ณ , ๋ค๋ฅธ ๊ฐ์ฒด๋ค๊ณผ ํจ๊ป ์ด๋ฃจ์ง๋ค. ์ด๋ UIWindow ๋ ์ผ๋ถ ์ฐธ์ฌํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ญ๊ฐ UIWindow๊ฐ UIView๋ณด๋ค ์์ํด๋์ค์ผ๊ฑฐ๋ผ๋ ์ด๋ฏธ์ง๊ฐ ์์๋๋ฐ ๋ฐ๋์๋ค UIWindow๋ UIView์ ํ์ ํด๋์ค๋ค. UIWindow์ ์๊ฐ์ ์ญํ UIWindow์ ์ญํ ์ View๋ฅผ ๋ํ๋ด๋ โ์ก์" ์ญํ ์ด๋ค.(๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ด๋ ์ปจํ ์ด๋) ๋ฐ๋์ UIWindow๊ฐ ์์ด์ผ ํ๋ฉด์ View๋ค์ ๋์คํ๋ ์ด ํ ์ ์๋ค. window๊ฐ ์ก์๋ผ๋ฉด, ๋ด๋ถ์ ๊ทธ๋ฆผ์ rootVie..
2022.03.22 -
Property Property๋? Class, Struct, Enum์ ์์๋ ์์๋ ๋ณ์๋ฅผ ๋งํ๋ค. ํ๋กํผํฐ์ ์ข ๋ฅ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ ํ ์ ์๋ค. ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ฐ์ฐ ํ๋กํผํฐ(Computed Property) ํ์ ํ๋กํผํฐ(Type Property) ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ let , var ๋ก ์ ์ธํ๋ ์ธ์คํด์ค ๋ณ์, ํน์ ์์๋ฅผ ๋งํ๋ค. ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด, ํด๋์ค์์๋ง ์ฌ์ฉ๊ฐ๋ฅ ์ง์ฐ ์ ์ฅ ํ๋กํผํฐ(Lazy stored property) ํธ์ถ ๋๊ธฐ ์ ์๋ ๊ฐ์ ์ด๊ธฐํ ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ์ฑ๋ฅ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค ์ผ ์ ์๋ค. ํด๋์ค, ๊ตฌ์กฐ์ฒด์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์์์๋ ์ฌ์ฉํ ์ ์๋ค. โ ์์๋ ์ธ์คํด..
(Swift) ์ ์ฅ ํ๋กํผํฐ , ์ฐ์ฐ ํ๋กํผํฐ , ํ๋กํผํฐ ์ต์ ๋ฒ (propery observer)Property Property๋? Class, Struct, Enum์ ์์๋ ์์๋ ๋ณ์๋ฅผ ๋งํ๋ค. ํ๋กํผํฐ์ ์ข ๋ฅ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ ํ ์ ์๋ค. ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ฐ์ฐ ํ๋กํผํฐ(Computed Property) ํ์ ํ๋กํผํฐ(Type Property) ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ let , var ๋ก ์ ์ธํ๋ ์ธ์คํด์ค ๋ณ์, ํน์ ์์๋ฅผ ๋งํ๋ค. ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด, ํด๋์ค์์๋ง ์ฌ์ฉ๊ฐ๋ฅ ์ง์ฐ ์ ์ฅ ํ๋กํผํฐ(Lazy stored property) ํธ์ถ ๋๊ธฐ ์ ์๋ ๊ฐ์ ์ด๊ธฐํ ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ์ฑ๋ฅ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค ์ผ ์ ์๋ค. ํด๋์ค, ๊ตฌ์กฐ์ฒด์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์์์๋ ์ฌ์ฉํ ์ ์๋ค. โ ์์๋ ์ธ์คํด..
2022.03.16 -
๋ฉ๋ชจ๋ฆฌ ๋์(Memory leak)๋ ? retain cycle๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ฒด๋ฅผ ํ ๋น ํด์ ํ ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. Swift๋ ARC๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋๋ฐ, ๋ ๊ฐ์ฒด ์ด์์ด ์๋ก์ ๋ํด ๊ฐํ ์ฐธ์กฐ๋ฅผ ํ๋ ๊ฒฝ์ฐ์ retain cycle์ด ๋ฐ์ํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐธ์กฐ ์นด์ดํ ์ด 0์ด ๋์ง ์์ deinit์ด ํธ์ถ๋์ง ์๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๊ฐ์ฒด๊ฐ์ ์ํธ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ weak, unowned ํค์๋๋ฅผ ํตํด ์ฝํ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค. (์์ธํ ๋ด์ฉ์ ARC์ ๋ํด ์์๋ณด๋ฉด ๋๋ค.) class A{ var b: B? } class B{ var a: A? } func makeMemoryLeaks(){ let a = A() let b = B() a.b = b b.a = a } ๊ฐ๋จํ ์๋ฅผ ๋ค๋ฉด..
(iOS) ๋ฉ๋ชจ๋ฆฌ ์ด์ ๋๋ฒ๊น , ๋ฉ๋ชจ๋ฆฌ ๊ทธ๋ํ Xcode instrument, ๋ฉ๋ชจ๋ฆฌ ๋์๋ฉ๋ชจ๋ฆฌ ๋์(Memory leak)๋ ? retain cycle๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ฒด๋ฅผ ํ ๋น ํด์ ํ ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. Swift๋ ARC๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋๋ฐ, ๋ ๊ฐ์ฒด ์ด์์ด ์๋ก์ ๋ํด ๊ฐํ ์ฐธ์กฐ๋ฅผ ํ๋ ๊ฒฝ์ฐ์ retain cycle์ด ๋ฐ์ํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐธ์กฐ ์นด์ดํ ์ด 0์ด ๋์ง ์์ deinit์ด ํธ์ถ๋์ง ์๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๊ฐ์ฒด๊ฐ์ ์ํธ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ weak, unowned ํค์๋๋ฅผ ํตํด ์ฝํ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค. (์์ธํ ๋ด์ฉ์ ARC์ ๋ํด ์์๋ณด๋ฉด ๋๋ค.) class A{ var b: B? } class B{ var a: A? } func makeMemoryLeaks(){ let a = A() let b = B() a.b = b b.a = a } ๊ฐ๋จํ ์๋ฅผ ๋ค๋ฉด..
2022.03.11