πŸ’» 개발

    [Android] μ•Œλ¦Ό ν΄λ¦­μ‹œ Activity, Fragment둜 이동

    κ΅¬ν˜„ 문제 μ•Œλ¦Ό ν΄λ¦­ν•˜λ©΄ νŠΉμ • 화면을 λ„μ–΄μ€˜μ•Ό ν•˜λŠ” λ¬Έμ œμ˜€λ‹€. ν•΄κ²° 방법 PendingIntent λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. Notification 속성에 Intent 속성을 λΆ€μ—¬ν•  수 μžˆλŠ”λ° 이 λ•Œ PendingIntent λ₯Ό λ„˜κ²¨μ€€λ‹€. λ˜ν•œ PendingIntent 객체에 putExtra 둜 ν™”λ©΄ μ΄λ™μœΌλ‘œ 띄어쀄 Fragment 의 μ‹λ³„μžλ₯Ό λ„˜κ²¨μ€€λ‹€. 이λ₯Ό ν™œμš©ν•˜μ—¬ MainActivity κ°€ onCreate 됐을 λ•Œ getStringExtra 둜 Fragment 의 μ‹λ³„μžλ₯Ό κ°€μ Έμ˜€κ³  ν•΄λ‹Ή Fragment 둜 μ „ν™˜ν•œλ‹€. μ½”λ“œ - ReceiverService μš°μ„  μ§€λ‚œλ²ˆμ— κ΅¬ν˜„ν–ˆλ˜ 이벀트 μˆ˜μ‹  μ•Œλ¦Όμ— λŒ€ν•œ μ½”λ“œλ₯Ό κ°€μ Έμ™”λ‹€. // 이벀트λ₯Ό μˆ˜μ‹ ν–ˆμ„ 경우 μ‚¬μš©μžμ—κ²Œ μ•Œλ¦Ό 전솑 private fun occurEven..

    [Android] λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ†ŒμΌ“ ν†΅μ‹ μœΌλ‘œ 이벀트 μˆ˜μ‹  ν›„ μ•Œλ¦Ό

    κ΅¬ν˜„ 문제 μ‘Έμ—…ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ„œλ²„μ—μ„œ νŠΉμ •ν•œ 이벀트λ₯Ό μˆ˜μ‹ ν•˜λ©΄ 이벀트 μ’…λ₯˜μ— 따라 μ„œλ‘œ λ‹€λ₯Έ 2개의 μ•Œλ¦Όμ„ λ„μ–΄μ£ΌλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•΄μ•Ό ν–ˆλ‹€. μ†ŒμΌ“ ν†΅μ‹ μœΌλ‘œ 이벀트λ₯Ό μˆ˜μ‹ ν•˜λŠ”λ° Activity μ΄λ™μ΄λ‚˜ Fragment 이동에 관계 없이 μ„œλ²„μ™€ μ—°κ²° κ°€λŠ₯ν•œ μ†ŒμΌ“ 톡신이 ν•„μš”ν–ˆλ‹€. ν•΄κ²° 방법 MVVMκ³Ό 단일 Activityλ₯Ό μ‚¬μš©ν–ˆκΈ°μ— ActivityλŠ” MainActivity ν•œ 개 λΏμ΄μ—ˆκ³  MainActivity μ—μ„œ μ†ŒμΌ“ 톡신을 κ΅¬ν˜„ν•˜λ©΄ λ˜λŠ” λ¬Έμ œμ˜€λ‹€. ν•˜μ§€λ§Œ 앱을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μƒν™©μ—μ„œλ„ μ•Œλ¦Όμ„ μˆ˜μ‹ ν•΄μ•Ό ν•  ν•„μš”κ°€ μžˆμ—ˆκ³  이λ₯Ό μœ„ν•΄ Serviceλ₯Ό μ‚¬μš©ν–ˆλ‹€. λ¬Όλ‘  MainActivity μ•ˆμ— ν•΄λ‹Ή κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ μ†ŒμΌ“ 톡신이 MainActivity μžμ²΄μ— μ’…μ†λ˜λŠ” 상황이 λ°œμƒν•˜κΈ°μ— ..

    [TIL] 22.06.03

    iOS μ—μ„œ ν™”λ©΄ 이동을 ν•˜λŠ” λ°©λ²•μ—λŠ” 4가지가 μžˆλ‹€. ViewController μ—μ„œ ν™”λ©΄ μ „ν™˜ ViewController κ°€ λ‹€λ₯Έ ViewController λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν™”λ©΄ μ „ν™˜ NavigationViewController λ₯Ό μ‚¬μš©ν•˜μ—¬ ν™”λ©΄ μ „ν™˜ ν™”λ©΄ μ „ν™˜μš© 객체 Segue λ₯Ό μ‚¬μš©ν•˜μ—¬ ν™”λ©΄ μ „ν™˜ 1. ViewController μ—μ„œ ν™”λ©΄ μ „ν™˜ ViewController μœ„μ˜ View λ₯Ό λ‹€λ₯Έ View 둜 κ΅μ²΄ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ‘œ 인해 μ‚¬μš©μ„ μ§€μ–‘ν•œλ‹€. νŠΉμ •ν•œ κ²½μš°μ—λ§Œ μ‚¬μš©ν•œλ‹€. μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” View 의 Visibility 속성을 μ΄μš©ν•˜μ—¬ λ³€κ²½ν•˜λŠ” 방식을 자주 μ‚¬μš©ν–ˆμ—ˆλŠ”λ° iOS μ—μ„œλŠ” μ§€μ–‘ν•œλ‹€κ³  ν•˜λ‹ˆ μ’€ μ‹ κΈ°ν–ˆλ‹€. 이 뢀뢄에 λŒ€ν•΄μ„  μ’€ 더 찾아보고 정리해봐야겠닀. 2. ViewContr..

    [TIL] 22.05.27

    κ³΅λΆ€ν•œ 것 Swift 문법 μ•Œκ²Œλœ 것 1. Guard Guard ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 쑰건에 false인 κ²½μš°μ—λŠ” else ꡬ문이 μ‹€ν–‰λ˜μ–΄ μ΄ν›„μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ λͺ»ν•˜κ²Œ ν•œλ‹€. continue 와 λΉ„μŠ·ν•˜λ‹€. import Foundation func guardTest(value : Int?) { guard let value = value else {return} print(value) } guardTest(value : 2) guardTest(value : nil) // 아무것도 좜λ ₯λ˜μ§€ μ•ŠμŒ 쑰건문과 μœ μ‚¬ν•œ κΈ°λŠ₯이라고 λ³Ό 수 μžˆλŠ”λ° Guard λŠ” else λ₯Ό κ°•μ œν•œλ‹€. // 일반적인 쑰건문 if 쑰건 == true { // 참인 κ²½μš°μ— μ‹€ν–‰ν•  μ½”λ“œ } else { // 거짓인 κ²½μš°μ— μ‹€ν–‰ν•  μ½”λ“œ } // G..

    [TIL] 22.05.26

    κ³΅λΆ€ν•œ 것 Swift 문법 μ•Œκ²Œλœ 것 1. ν΄λž˜μŠ€μ™€ ꡬ쑰체의 차이 1. 곡톡점 값을 μ €μž₯ν•  ν”„λ‘œνΌν‹°λ₯Ό μ„ μ–Έν•  수 있음 ν•¨μˆ˜μ  κΈ°λŠ₯을 ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•  수 있음 λ‚΄λΆ€ 값을 .λ₯Ό 톡해 μ ‘κ·Όν•  수 있음 μƒμ„±μžλ₯Ό μ‚¬μš©ν•΄ 초기 μƒνƒœλ₯Ό μ„€μ •ν•  수 있음 Extension 을 μ‚¬μš©ν•˜μ—¬ κΈ°λŠ₯을 ν™•μž₯ν•  수 있음 Protocol 을 μ±„νƒν•˜μ—¬ κΈ°λŠ₯을 μ„€μ •ν•  수 있음 2. 차이점 - 클래슀 μ°Έμ‘° νƒ€μž… ARC 둜 λ©”λͺ¨λ¦¬λ₯Ό 관리 상속 κ°€λŠ₯ νƒ€μž… μΊμŠ€νŒ… 을 톡해 λŸ°νƒ€μž„μ—μ„œ 클래슀 μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…μ„ 확인할 수 있음 deinit 을 μ‚¬μš©ν•˜μ—¬ 클래슀 μΈμŠ€ν„΄μŠ€μ˜ λ©”λͺ¨λ¦¬ 할당을 ν•΄μ œν•  수 있음 같은 클래슀 μΈμŠ€ν„΄μŠ€λ₯Ό μ—¬λŸ¬ 개의 λ³€μˆ˜μ— ν• λ‹Ήν•œ 뒀에 값을 λ³€κ²½μ‹œν‚€λ©΄ λͺ¨λ“  λ³€μˆ˜μ— 영ν–₯을 쀌 (λ©”λͺ¨λ¦¬λ₯Ό 볡사) - ꡬ쑰체 κ°’ νƒ€μž… 같은 ꡬ쑰체λ₯Ό ..

    [Android] MVVM νŒ¨ν„΄ 적용기 - 2

    GitHub - k906506/MVVM: πŸ”¨ MVVM이 λ­μ—μš”? πŸ”¨ MVVM이 λ­μ—μš”? Contribute to k906506/MVVM development by creating an account on GitHub. github.com MVVM 두 번째 μ‹œκ°„μ΄λ‹€. κ°‘μž‘μŠ€λŸ½κ²Œ μ°Ύμ•„μ˜¨ μ΄μœ λŠ” μ‘Έν”„λ₯Ό μ§„ν–‰ν•˜λ‹€κ°€ RecyclerView λ₯Ό Room 을 μ‚¬μš©ν•΄μ„œ MVVM νŒ¨ν„΄ 으둜 κ΅¬ν˜„ν–ˆλŠ”λ° μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•Šμ•„μ„œ RecyclerView + Room + MVVM 을 μ •λ¦¬ν•˜κ³  μ½”λ“œλ₯Ό λ‹€μ‹œ 보렀고 ν•œλ‹€. μš°μ„  MVVM 을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” μœ„μ˜ 그림을 μ΄ν•΄ν•˜κ³  λ„˜μ–΄κ°€λŠ” 것이 μ’‹λ‹€. κ·Έλ¦Όμ—μ„œ 주의깊게 봐야할 것은 ν™”μ‚΄ν‘œμ˜ λ°©ν–₯ 이닀. λͺ¨λ“  ν™”μ‚΄ν‘œκ°€ 단방ν–₯으둜 μ—°κ²° λ˜μ–΄μžˆκ³  μƒμœ„ μš”μ†ŒλŠ” ν•˜μœ„ μš”μ†Œλ₯Ό μ°Έμ‘°ν•œλ‹€. μ°Έμ‘°..

    [μ½”ν‹€λ¦° 완전정볡] 곡변성, λ°˜κ³΅λ³€μ„±, 무변성

    κ°€λ³€μ„± λ³€ν•  수 μžˆλ‹€? 가변성이 λ­μ—μš”? πŸ™„ μ½”ν‹€λ¦° μ—μ„œμ˜ 가변성은 ν˜•μ‹ λ§€κ°œλ³€μˆ˜κ°€ 클래슀 계측에 영ν–₯을 μ£ΌλŠ” 것을 λ§ν•œλ‹€. 예λ₯Ό λ“€μ–΄ ν˜•μ‹ A의 값이 ν•„μš”ν•œ λͺ¨λ“  ν΄λž˜μŠ€μ— ν˜•μ‹ B의 값을 넣어도 λ¬Έμ œκ°€ μ—†λ‹€λ©΄ BλŠ” A의 ν•˜μœ„ ν˜•μ‹μ΄ λœλ‹€. μ•„λž˜ μ½”λ“œλ₯Ό 보자. val integer : Int = 1 val number : Number = integer // NumberλŠ” μƒμœ„ μžλ£Œν˜•, IntλŠ” ν•˜μœ„ μžλ£Œν˜• Intν˜•μœΌλ‘œ μ„ μ–Έν•œ integer λ³€μˆ˜κ°€ Numberν˜•μœΌλ‘œ μ„ μ–Έν•œ number λ³€μˆ˜μ— 할당해도 아무 λ¬Έμ œκ°€ μ—†λŠ” 것을 λ³Ό 수 μžˆλ‹€. 이게 λ°”λ‘œ 가변성이닀. 또 λ‹€λ₯Έ μ˜ˆλ‘œλŠ” Int?와 Intκ°€ μžˆλ‹€. Int?λŠ” null도 ν¬ν•¨ν•˜λ―€λ‘œ Int?κ°€ Int의 μƒμœ„ μžλ£Œν˜•μ΄ λœλ‹€. κ°€λ³€μ„±μ˜ 3가지 μœ ν˜• 기본적으둜..

    [μ½”ν‹€λ¦° 완전정볡] μ œλ„€λ¦­

    μ œλ„€λ¦­ μ œλ„€λ¦­ , λ‹€λ₯Έ μ–Έμ–΄λ₯Ό 이미 κ²½ν—˜ν•˜κ³  μ™”λ‹€λ©΄ λ‚―μ„  λ‹¨μ–΄λŠ” μ•„λ‹ˆλ‹€. 뭐 λŒ€μΆ© μ–˜κΈ°ν•˜λ©΄ μžλ£Œν˜• 을 λ‚˜μ€‘μ— μ„ μ–Έν•˜λŠ”? 그런 λŠλ‚Œμ΄λ‹€. μš°μ„  ν™•μ‹€ν•˜κ²Œ 집고 λ„˜μ–΄κ°€λ³΄μž. κ·Έλž˜μ„œ μ œλ„€λ¦­μ΄ 뭐고 μ™œ μ“°λŠ”κ±°μ—μš”? πŸ€” μ œλ„€λ¦­ 은 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  μžλ£Œν˜•μ„ λ‚˜μ€‘μ— μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ ν™•μ •ν•˜λŠ” 방법이닀. μ œλ„€λ¦­μ΄ λ‚˜μ˜€κ²Œ 된 배경은 μžλ£Œν˜•μ˜ 객체듀을 λ‹€λ£¨λŠ” λ©”μ†Œλ“œλ‚˜ ν΄λž˜μŠ€μ—μ„œ 컴파일 μ‹œκ°„μ— μžλ£Œν˜•μ„ κ²€μ‚¬ν•˜μ—¬ μ λ‹Ήν•œ μžλ£Œν˜•μ„ μ„ νƒν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄ 객체의 μžλ£Œν˜•μ„ μ»΄νŒŒμΌν•  λ•Œ μ²΄ν¬ν•˜κΈ° λ•Œλ¬Έμ— 객체 μžλ£Œν˜•μ˜ μ•ˆμ •μ„±μ„ 높이고 ν˜• λ³€ν™˜μ˜ λ²ˆκ±°λ‘œμ›€μ΄ 쀄어든닀. μ œλ„€λ¦­μ˜ μ‚¬μš© 방법 μ œλ„€λ¦­μ€ μ•΅κΈ€ λΈŒλž˜ν‚· 사이에 ν˜•μ‹ λ§€κ°œλ³€μˆ˜ λ₯Ό λ„£μ–΄ μ„ μ–Έν•˜κ³  ν•˜λ‚˜ μ΄μƒμ˜ ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ₯Ό 지정할 수 μžˆλ‹€. ν˜•μ‹ λ§€κ°œλ³€μˆ˜λŠ” 자..

    [μ½”ν‹€λ¦° 완전정볡] μ—¬λŸ¬ μ’…λ₯˜μ˜ 클래슀

    보톡 클래슀 λŠ” 속성과 λ™μž‘μ„ 가지기 λ•Œλ¬Έμ— ν”„λ‘œνΌν‹° 와 λ©”μ†Œλ“œ λ₯Ό λ©€λ²„λ‘œ 가진닀. 먄약 νŠΉμ • λ™μž‘μ„ 가지지 μ•Šκ³  μ˜€λ‘œμ§€ 데이터 μ €μž₯을 μœ„ν•΄ μ‚¬μš©ν•œλ‹€λ©΄ 일반적인 ν΄λž˜μŠ€μ—μ„œμ˜ κ΅¬ν˜„ 뢀뢄은 ν•„μš”κ°€ 없을 것이닀. κ΅¬ν˜„λΆ€λ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠμœΌλ©΄ 그만큼 λ©”λͺ¨λ¦¬λ₯Ό 덜 μ‚¬μš©ν•˜κ²Œ 되고 μžμ›μ˜ λ‚­λΉ„λ₯Ό 막을 수 있게 될 것이닀. 이처럼 μ½”ν‹€λ¦°μ—μ„œλŠ” 데이터 μ €μž₯을 μœ„ν•œ ν΄λž˜μŠ€κ°€ μžˆλŠ”λ° λ°”λ‘œ 데이터 클래슀 이닀. 데이터 클래슀 보톡 데이터 전달을 μœ„ν•œ 객체λ₯Ό DTO(Data Transfer Object) 라고 λΆ€λ₯Έλ‹€. κ΅¬ν˜„ λ‘œμ§μ„ 가지고 μžˆμ§€ μ•Šκ³  μˆœμˆ˜ν•œ 데이터 객체λ₯Ό ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— 속성과 속성에 μ ‘κ·Όν•˜κ³ μž ν•˜λŠ” κ²Œν„°μ™€ μ„Έν„° λ₯Ό 가진닀. μΆ”κ°€μ μœΌλ‘œ toString(), equals() κ³Ό 같은 데이터λ₯Ό ν‘œν˜„ν•˜κ±°λ‚˜ λΉ„κ΅ν•˜λŠ” λ©”μ†Œλ“œ..

    [μ½”ν‹€λ¦° 완전정볡] 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€

    좔상 클래슀 좔상 클래슀 VS μΈν„°νŽ˜μ΄μŠ€ 좔상 클래슀 λŠ” λŒ€λž΅μ μΈ μ„€κ³„μ˜ λͺ…세와 κ³΅ν†΅μ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•œ ν΄λž˜μŠ€μ΄λ‹€. 즉, ꡬ체적이지 μ•Šμ€ 것이닀. 좔상 클래슀 λ₯Ό μƒμ†ν•˜λŠ” ν•˜μœ„ 클래슀 λŠ” 좔상 클래슀의 λ‚΄μš©μ„ 더 ꡬ체화 ν•΄μ•Ό ν•œλ‹€. μ˜€μž‰? 그럼 좔상 ν΄λž˜μŠ€λž‘ μΈν„°νŽ˜μ΄μŠ€λŠ” 같은 κ±° 아냐? πŸ€” μ—„λ°€νžˆ λ§ν•˜λ©΄ λ‹€λ₯΄λ‹€. μΈν„°νŽ˜μ΄μŠ€ μ—­μ‹œ λŒ€λž΅μ μΈ 섀계 λͺ…μ„Έλ₯Ό κ΅¬ν˜„ν•˜κ³  μΈν„°νŽ˜μ΄μŠ€ λ₯Ό μƒμ†ν•˜λŠ” ν•˜μœ„ 클래슀 μ—μ„œ 이λ₯Ό κ΅¬μ²΄ν™”ν•˜λŠ” 것은 λ™μΌν•˜λ‹€. ν•˜μ§€λ§Œ μΈν„°νŽ˜μ΄μŠ€μ—μ„œλŠ” ν”„λ‘œνΌν‹°μ˜ μƒνƒœ 정보λ₯Ό μ €μž₯ν•  수 μ—†λ‹€. λ‹€μ‹œ λ§ν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€ μ—μ„œλŠ” ν”„λ‘œνΌν‹°μ˜ μ΄ˆκΈ°ν™” κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 것이닀. interface Vehicle { val name : String val color : String val weight : Double } ..