분류 전체보기 (54) 썸네일형 리스트형 [iOS] 디자인 패턴 | Target - Action Target-Action 디자인 패턴 Target-Action 디자인 패턴에서 객체는 이벤트가 발생할 때 다른 객체에 메시지를 보내는 데 필요한 정보를 포함한다. 액션은 특정 이벤트가 발생했을 때 호출할 메소드를 의미하고, 타겟은 액션이 호출될 객체를 의미한다. 이벤트 발생 시 전송된 메시지를 액션 메시지라고 하고, 타겟은 프레임워크 객체를 포함한 모든 객체가 될 수 있지만 보통 컨트롤러가 된다. 직접 타겟이 될 객체에 액션에 해당하는 메소드를 호출하면 될텐데 굳이 타겟과 액션을 지정하고 디자인 패턴으로 활용하는 이유는? 만약 특정 이벤트가 발생했을 때, abc라는 이름의 메소드를 호출해야 하는 상황이라고 가정해보자. 그런데 이 abc라는 (액션)메소드는 A라는 클래스에도, B라는 클래스에도 정의되어 있.. [iOS] 디자인 패턴 | Singleton 싱글턴 (Singleton) 싱글턴은 특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체를 의미합니다. 싱글턴은 애플리케이션이 요청하는 횟수와는 관계없이, 이미 생성된 같은! 하나의! 인스턴스를 반환한다. 즉, 앱 내에서 특정 클래서의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있다. ➡️ 앱 내에서 공용으로 사용되는 인스턴스 임의로 메모리에서 해제해주지 않는 이상 프로그램이 실행되고 끝날 때까지 메모리에 유지된다. class UserInfo { static let shared: UserInfo = UserInfo() var ID: String? var age: Int? private init() { } } static let : let 으로 상속을 금지하고 있으며, sta.. [iOS] UIActivityIndicatorView UIActivityIndicatorView A view that shows that a task is in progress. 어떠한 작업이 진행 중임을 나타내는 뷰 (로딩 중 아이콘이라고 생각하면 됨 ! 실제로 데이터가 로드되기 직전까지 animating 하다가 로드 되면 stop, hide) class UIActivityIndicatorView : UIView // style : large, medium init(style: UIActivityIndicatorView.Style) func startAnimating() func stopAnimating() // 애니메이션이 멈췄을 때 뷰를 hidden 처리해 줄 것인지를 결정 var hidesWhenStopped: Bool { get set } [swift] ARC | 약한참조 (weak) 약한참조 (weak) 약한참조 (weak) 는 강한참조와 달리 자신이 참조하는 인스턴스의 참조 횟수를 증가시키지 않는다. 참조 타입의 프로퍼티나 변수의 선언 앞에 weak 키워드를 써주면 그 프로퍼티나 변수는 자신이 참조하는 인스턴스를 약한참조한다. 약한참조를 사용한다면 자신이 참조하는 인스턴스가 메모리에서 해제될 수도 있다는 것을 예상해볼 수 있어야 한다. 자신이 참조 횟수를 증가시키지 않았기 때문에 그 인스턴스를 강한참조하던 프로퍼티나 변수에서 참조 횟수를 감소시켜 0으로 만들면, 자신이 참조하던 인스턴스가 메모리에서 해제되기 때문이다. 약한참조와 상수, 옵셔널 약한참조는 상수에서 쓰일 수 없다. 만약 자신이 참조하던 인스턴스가 메모리에서 해제된다면 nil이 할당될 수 있어야 하기 때문이다. 또한 n.. [swift] ARC | 강한참조 (Strong) 강한참조 (Strong) 인스턴스가 계속해서 메모리에 남아있어야 할 명분을 만들어 주는 것 인스턴스는 참조 횟수가 0이 되는 순간 메모리에서 해제되는데, 인스턴스를 다른 인스턴스의 프로퍼티나 변수, 상수 등에 할당할 때 강한참조를 사용하면 참조 횟수가 1 증가한다. 또한 강한참조를 사용하는 프로퍼티, 변수, 상수 등에 nil을 할당해주면 참조 횟수가 1 감소한다. 참조의 기본은 강한참조이므로 클래스 타입의 프로퍼티, 변수, 상수 등을 선언할 때 별도의 식별자를 명시하지 않으면 강한참조이다. class Person { let name: String init(name: String) { self.name = name print("\(name) is being initialized") } deinit { pr.. [swift] ARC란? (IBOutlet 선언할 때 weak을 왜 붙이는 걸까 알아보다가.. 여기까지 오게되었음) 매번 전달할 때마다 값을 복사해 전달하는 값 타입과는 달리, 참조 타입은 하나의 인스턴스가 참조를 통해 여러 곳에서 접근하기 때문에 언제 메모리에서 해제되는 지가 중요한 문제이다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 메모리 자원을 낭비하게 되며, 이는 성능 저하로 이어진다. 그래서 스위프트는 프로그램의 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC와 값 타입 ARC가 관리해주는 참조 횟수 계산 (Reference Counting) 은 참조 타입인 클래스의 인스턴스에만 적용된다. 구조체, 열거형은 값 타입으로 참조 횟수 계산과 무관 ➡️ 구조체, 열거형은 다른 곳에서 참조.. [iOS] 뷰의 재사용 뷰의 재사용 iOS 기기는 한정된 메모리를 가지고 애플리케이션을 구동한다. 사용자에게 보여주고 싶은 데이터가 매우 많고, 그만큼 많은 뷰가 필요하다면? 화면에 표시할 수 있는 뷰의 개수는 한정적이지만 표현해야 하는 데이터가 매우 많은 경우, 반복된 뷰를 생성하기보다는 뷰를 재사용한다. 사용할 수 있는 메모리가 작아서 데이터의 양만큼 많은 뷰를 생성하는 것은 메모리를 많이 낭비하기 때문이다. 뷰를 재사용하면 메모리를 절약하고, 성능 또한 향상시킬 수 있다. 대표적인 예 UITableViewCell UICollectionViewCell 재사용 원리 테이블뷰 및 컬렉션뷰에서 셀을 표시하기 위해 데이터 소스에 뷰(셀) 인스턴스를 요청한다. 데이터 소스는 요청마다 새로운 셀을 만드는 대신, 재사용 큐(Reuse .. [iOS] 테이블 뷰 (TableView) - DataSource, Delegate TableView DataSource, Delegate DataSource와 Delegate DataSource : 데이터를 받아 이를 뷰에 그려주는 역할 ➡️ 무엇을 어떻게 보여줄 것인가? Delegate : 동작을 제시 ➡️ 사용자가 보이는 것들 중 무언가에 대한 액션을 취한다면 그에 대한 동작 수행 DataSource는 MVC 중 모델과 관련되어 있고, Delegate는 테이블뷰의 동작과 모양을 관리하기 때문에 컨트롤러의 역할과 가깝다. UITableViewDataSource The methods adopted by the object you use to manage data and provide cells for a table view. protocol UITableViewDataSource @r.. 이전 1 2 3 4 5 6 7 다음