iOS/πŸ€– App

[iOS] UIApplication μ΄λž€?

woozzang 2021. 1. 28. 22:04

μ•ˆλ…•ν•˜μ„Έμš”πŸΆ

이번 μ‹œκ°„μ—λŠ” `UIApplication` ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

이 ν΄λž˜μŠ€κ°€ μ–Έμ œ λ“±μž₯ν•˜λŠ” μ§€λŠ” 이전 글을 읽고 μ˜€μ‹œλ©΄ 쒋을 것 κ°™μ•„μš”!!!

 

 

" iOS μ•±μ˜ μ œμ–΄μ™€ μ‘°μ •μ˜ ꡬ심점 "

class UIApplication : UIResponder

 

κ°œμš”

 

λͺ¨λ“  iOS 앱은 μ •ν™•νžˆ 단 ν•˜λ‚˜μ˜ UIApplication μΈμŠ€ν„΄μŠ€λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

μ•„μ£Ό λ“œλ¬Έκ²½μš°, UIApplicationλ₯Ό μ„œλΈŒν΄λž˜μ‹±ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•©λ‹ˆλ‹€.

 

앱이 μ‹€ν–‰λ˜λ©΄, μ‹œμŠ€ν…œμ€ UIApplicationMain(_:_:_:_:) λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

:: 이전 글에 λ‚˜μ˜¨ λ‚΄μš©μ΄μ§€λ§Œ, 보톡 AppDelegate.main() 의 μ‹€ν–‰μœΌλ‘œ ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

ν•΄λ‹Ή λ©”μ„œλ“œμ˜ μž‘μ—… 쀑 ν•˜λ‚˜λŠ” UIApplication 였브젝트λ₯Ό λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.

 

이것은 μ‹±κΈ€ν†€μœΌλ‘œ λ§Œλ“€μ–΄μ§€λ©°, shared μ†μ„±μœΌλ‘œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

Launch Time 쀑 UIApplicationMain(_:_:_:_:) λ©”μ„œλ“œμ—μ„œ μƒμ„±λ©λ‹ˆλ‹€

 

 

 

" This function also sets up the main event loop, including the application’s run loop, and begins processing events."

μœ„ ν•¨μˆ˜λŠ” λ˜ν•œ μ•±μ˜ 런 루프λ₯Ό ν¬ν•¨ν•˜λŠ” 메인 이벀트 루프λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

 

μ•±μ˜ UIApplication μ˜€λΈŒμ νŠΈλŠ” μ‚¬μš©μž 이벀트의 초기 λΌμš°νŒ…μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ λΌμš°νŒ…μ€ 전달받은 μ‚¬μš©μž 이벀트λ₯Ό μ–΄λ–€ μ˜€λΈŒμ νŠΈμ— 전달할지 κ²°μ •ν•˜λŠ” μž‘μ—…μ΄ λ˜κ² μŠ΅λ‹ˆλ‹€.

 

UIApplication μ˜€λΈŒμ νŠΈλŠ” UIControl  μΈμŠ€ν„΄μŠ€κ°€ μ „λ‹¬ν•œ action message λ₯Ό μ μ ˆν•œ target μ˜€λΈŒμ νŠΈμ— μ „λ‹¬ν•©λ‹ˆλ‹€.

Target-action mechanism

 

UIApplication μ˜€λΈŒμ νŠΈλŠ” `open` μƒνƒœμ˜ UIWindow 였브젝트 리슀트λ₯Ό μœ μ§€ν•˜λ©΄μ„œ, μ•± λ‚΄ UIView μ˜€λΈŒμ νŠΈλ“€μ„ κ²€μƒ‰ν•˜λŠ”λ° μ‚¬μš©ν•©λ‹ˆλ‹€.

 

UIApplication ν΄λž˜μŠ€λŠ” delegate 을 μ •μ˜ν•©λ‹ˆλ‹€.

이 delegate은 UIApplicationDelegate ν”„λ‘œν† μ½œμ„ 채택해야 ν•©λ‹ˆλ‹€.

 

UIApplication μ˜€λΈŒμ νŠΈλŠ” 이 delegate μ—κ²Œ μ€‘μš”ν•œ λŸ°νƒ€μž„ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ μ•Œλ €μ€λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄, App launch, low-memory warnings, App termination 같은 이벀트 μž…λ‹ˆλ‹€.

μ•± μ‹œμž‘, λ©”λͺ¨λ¦¬ λΆ€μ‘± κ²½κ³ , μ•± μ’…λ£Œ

 

μœ„ μ΄λ²€νŠΈλ“€μ„ μ•Œλ €μ€ŒμœΌλ‘œμ„œ delegate κ°€ μ μ ˆν•˜κ²Œ λŒ€μ‘ν•  수 있게 ν•΄μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

 

앱듀은 ν˜‘λ™μ μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ¦¬μ†ŒμŠ€λŠ” email κ³Ό image file 같은 것듀인데, open(_:options:completionHandler:) λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ œμ–΄ν•©λ‹ˆλ‹€.

 

예λ₯Ό λ“€λ©΄, 앱은 이 λ©”μ„œλ“œμ— email URL 을 μ „λ‹¬ν•˜μ—¬ Mail 앱을 μ‹€ν–‰ν•˜κ³  λ©”μ‹œμ§€λ₯Ό 화면에 ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.


 

# μ•„λž˜μ—λŠ” 아직 해보지 μ•Šμ€ μž‘μ—…λ“€μ΄ λ§Žμ•„μ„œ 원문을 남겨 λ†“μ•˜μŠ΅λ‹ˆλ‹€. 이해가 λ˜λŠ” μ‹œμ μ— 원문을 μ§€μš°λ €κ³  ν•©λ‹ˆλ‹€.

 

UIApplication 클래슀의 API λŠ” 기기에 νŠΉμ •ν•œ λ™μž‘μ„ κ°€λŠ₯ν•˜κ²Œ ν•΄μ€λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

 


 

Subclassing Notes

 

UIApplication을 μ„œλΈŒν΄λž˜μ‹± ν•΄μ•Όλ˜λŠ” κ²½μš°κ°€ 생길 λ•Œ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

끝!


 

λ‹€μŒ κΈ€: