KVO(Key-Value Observing)

특정 값을 감시하고 싶을때 사용한다.



 KVO는 setter에 오버라이드 하는 방식으로 사용할 수 있다.


Notification

 불특정 다수의 오브젝트에게 이벤트 전달.

여래개의 노티피케이션을 이름으로 구분.

각 클래스들은 자기들이 가지고 있는 Notification을 가지고 있다. 다음은 UIApplication의 Notification 이다. 여러 클래스들이 다양한 Notification을 보내주고 있다.



Notification은 다음과 같이 만들어서 등록 할 수 있다.




ARC(Automatic Reference Counting)

메모리 관리하는 방법으로 객체 참조자를 자동으로 관리해주는 방법이다. 이 기법을 사용하면 컴파일러가 자동으로 메모리를 릴리즈 해준다. alloc을 하고 retain, release을 해주지 않아도 된다. C library를 사용하는 경우 메모리 릴리즈를 해주지 않으므로 ARC를 사용하지 않는게 좋다.

strong 과 weak 의 개념이 추가 되었는데, weak의 경우 해당 pointer가 사라지면 nil을 가지게 된다. ARC를 사용할 경우 release를 사용할 수 없으므로 바로 nil을 할당하면 메모리를 반환할 수 있다.


Auto layout

leading과 trailing은 왼쪽과 오른쪽이 바뀌어 나올 수 있는데 이는 아랍권 처럼 글을 반대로 쓰는 국가들이 있기 때문이다.

Pin menu를 사용하여 뷰의 높이 너비, 다른 뷰와의 관계등을 설정 할 수 있다.


기본 원칙

기본적으로 핀이 박힌다고 보면 된다. 

Add missing constrains는 쓸일 없음.

Ctrl-드래그 또는 visual layout tools를 이용한다.

misplacement: 현재 보이는걸 믿지 말자. (빨간색으로 보이는게 진짜 보이는 위치이고, 주황색은 차이를 보여준다.)

 - Update Frames는 보이는걸 빨간색으로 변경, Update Constraints는 주황색으로 Constrains값을 변경

Conflict는 두개의 Constraints가 상충되는 경우 발생한다.

 Ambiguity - 정의된 컨스트레인트들이 다양한 결과를 낳을 경우, 컨스트레인트가 부족한 경우, 커스텀 뷰의 intricsic size가 정의되지 않았을 때



Posted by 빨간 양말