[ Swift ] @IBAction 소스 분석해보기

2020. 10. 14. 09:44Swift

 

 

 

 

@IBOutlet var lblHello: UILabel!

@IBOutlet : IBOutlet으로 정의된 변수를 아웃렛 변수라 부릅니다. 

여기서 IB는 Interface Builder의 약자로, @IB로 시작되는 변수나 함수는 인터페이스 빌더와 관련된 변수나 함수라는것을 의미합니다.

@IBOutlet은 객체를 소스 코드에서 참조하기 위해 사용하는 키워드이며 주로 색상, 크기, 모양. 선의 두께, 텍스트 내용 등 객체의 속성을 제어하는 데 사용합니다.

 

var lblHello : 변수를 선언할 때는 var 키워드를 사용합니다. 변수를 선언하는 var 뒤에 아웃렛 변수의 이름 lblHello를 입력하여 변수를 선언합니다.

 

UILabel! : 선언하고자 하는 변수의 타입을 나타냅니다. 위 예제에서는 레이블 객체에 대한 변수를 선언하는 것이므로 UILabel 클래스 타입을 선택했습니다. 여기서 UILabel의 UI는 User Interface를 의미합ㄴ;디/

 

strong / weak : 아웃렛 변수를 추가할 때 나타나는 팝업 창의 Storage라는 항목에서 strong과 weak 둘 중에서 선택할 수 있죠. 이 두가지는 메모리 회수 정책을 나타내는 키워드 입니다. 일반적으로 객체를 참조하기위한 아웃렛 변수는 strong을 사용하는데, Xcode에서도 strong이 기본값으로 선택되어 있습니다. weak로 아웃렛 변수를 선언하면 다음과 같이 변서 정의 앞에 weak가 추가되지만 strong을 선택하면 아무런 키워드도 추가되지 않습니다.

 

 

@IBOutlet var lblHello: UILabel!
@IBOutlet weak var lblHello: UILabel!

참고로, strong으로 선언된 변수는 다른곳에서 참조하고 있을 경우 메모리에서 제거되지 않지만 weak로 선언된 변수는 다른 곳에서 참조하고 있더라도 시스템이 임의적으로 메모리에서 제거할 수 있스비낟. 그럼 왜 이런 두 가지 메모리 회수 정책을 사용할까요? 바로 메모리 관리 이슈 때문입니다. strong으로 선언된 변수들끼리 상호 참조하는 일이 생길 경우에는 앱이 종료되기 전까지는 메모리에서 제거되지 않기 때문에 메모리 누수가 발생합니다. 이 경우 어느 한 변수 또는 모든 변수를 weal로 지정하면 시스템에서 임의로 제거할 수있으므로 상호 참조할때에도 사용하지 않을 경우에는 메모리가 삭제될 수 있습니다.

 

 

@IBAction func btnSend(_ sender: UIButton) {
	 lblHello.text = "Hello, " + txtName.text!

@IBAction : 객체의 이벤트를 제어하기 위해 사용하는 키워드로, @IBAction으로 정의된 함수를 액션함수라 부릅니다.

버튼을 누르거나 피커가 선택되는 등, 특정 객체에서 원하는 이벤트기 발생했을 때 정해진 작업을 실행하기 위해 사용합니다.

 

func btnSend: : 함수를 선언할 때 func 키워드를 사용해서 선언합니다. 함수를 선언하는 func뒤에 액션 함수의 이름 btnSend를 입력하여 액션함수를 선언합니다.

 

(_ sender: UIButton): : 액션함수가 실행되도록 이벤트를 보내는 객체, 즉 여기서는 버튼 객체에서 이벤트가 발생했을 때  해당액션함수를 실행시킬 것이므로 UIButton 클래스 타입을 선택합니다.

 

lBlHello.text : 레이블 객체가 가지고 있는 속성 중 텍스트 내용을 의미하는 속성입니다. 잎에서 레이블의 아웃렛 변수 이름을  lblHello 로 정한것을 기억하죠?

 

= : '같다'는 의미가 아니라 레이블의 텍스트 속성 .text에 뒤에 내용을 대입한다는 의미입니다.

 

"Hello, " : 쌍따옴표 (" ") 안에 들어간 문구를 그대로 문자열로 사용합니다.

 

+ : '더하기'를 의미하는 것이 아니라 앞의 문자열과 뒤의 문자열을 합한다는 의미입니다.

 

txtName.text! : 텍스트필드 객체가 가지고 있는 속성 중 텍스트 내용을 의미하는 속성입니다. 끝에 붙는!는 옵셔널 변수의 강제 언레핑을 의미합니다.

'Swift' 카테고리의 다른 글

[ Swift ] DispatchQueue  (0) 2020.10.21
[ Swift ] http data 가져오기 data trimming  (0) 2020.10.15
[ Swift ] Tuples  (0) 2020.10.06
[ Swift ] Optional  (0) 2020.10.05
[ Swift ] if, guard, switch문 사용방법  (0) 2020.09.29