적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Swift iOS 앱 개발 173

[Cocoa Design Pattern] Singleton Pattern

싱글톤 패턴이란 인스턴스를 하나만 생성하여 어디에서든지 참조할 수 있도록 하는 객체 생성 패턴.오디오북 앱에서 뮤직 플레이어를 싱글톤으로 하나만 생성하여 재생 관련 메서드들을 처리한 경험이 있는데,이처럼 앱 내에서 공용으로 사용하고 싶은 기능이나 리소스를 싱글톤으로 만들어 인스턴스를 공유할 수 있고, 여러번 호출하더라도 인스턴스가 처음 생성될 때에만 메모리에 할당되기 때문에 메모리도 절약할 수 있다는 장점이 있다.  싱글톤 패턴이란?Provide access to a shared resource using a single, shared class instance.어떤 기능이나 리소스를 앱 내에서 공용으로 사용하고 싶을 때, 해당 인스턴스를 하나만 생성하여 어디에서든지 참조하고 공유할 수 있도록 하는 객체..

[Cocoa Design Pattern] Delegation Pattern

딜리게이트 패턴이란 딜리게이트 패턴이란? 델리게이트는 어떤 객체가 해야 하는 일을 부분적으로 확장해서 대신 처리를 한다. 객체는 Delegate라는 헬퍼 객체를 만들어 권한을 위임함으로써 요청을 처리 delegate는 대신 처리를 수행할 객체와 처리를 요청하는 객체로 구성된다? 왜 사용? to Customize Object Behavior 코드를 재사용하고 유지보수하기 쉬워진다? delegate는 일을 시킬 뿐, 어떻게 처리해야 하는지 일의 처리 방법은 그 일을 수행하는 객체에 구현. 어떤 일을 해야 하는지 미리 정해놓기만 하고, 처리를 할 때 상황에 맞는 코드를 작성하면 된다. 예를 들어 동일한 작업인데도 불구하고 객체마다 다른 내용을 처리해야할 때, 프로토콜에는 어떤 일을 해야 하는지 미리 정해놓기만..

[iOS] Bounds와 Frame의 차이점

Frame은 상위뷰 기준, Bounds는 자기 자신을 기준으로 좌표를 나타낸다. Frame : 상위뷰의 좌표 시스템에서 뷰의 위치와 크기를 나타냄 Bounds : 자신의 좌표 시스템에서 뷰의 위치와 크기를 나타냄 frame은 UIView의 위치나 크기를 설정할 때 사용한다. 스토리보드에서 우측에 X좌표와 Y좌표가 frame의 좌표. bounds는 View의 크기를 알고 싶거나 View내부에 그림을 그릴 때 사용한다.

[Swift] Subscripts란? + String은 subscript로 접근이 안되는 이유

class, struct, enum 타입에서 컬렉션, 배열 등의 멤버 요소에 index를 이용하여 간단하게 접근할 수 있는 방법. Swift에서 String은 각 문자를 이루고 있는 메모리의 크기가 가변적이기 때문에 Int 형식의 Subscript로는 접근이 불가하고, associated index 타입으로 String.index를 통해 접근이 가능하다. Subscripts란? https://docs.swift.org/swift-book/LanguageGuide/Subscripts.html Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the member elements of a c..

[Swift] Any와 AnyObject 비교 및 장단점

Swift는 Type에 민감한 언어이지만, Any와 AnyObject를 사용하면 특정되지 않은 타입에 대해서도 동작을 할 수 있도록 해준다. Any는 모든 유형의 인스턴스를 나타낼 수 있는 범용 타입이고, AnyObject는 모든 클래스 유형의 인스턴스를 나타낼 수 있는 프로토콜. 특정되지 않은 타입에 대해서도 동작을 하도록 특별한 두 가지 타입 Any와 AnyObject를 제공한다. 장점 모든 타입, 모든 클래스 타입을 저장할 수 있다는 장점 단점 매번 타입 체크 및 형변환을 해야하기때문에 필요에 의한 것이 아니라면 사용하지 않는 것이 좋다 참고 : https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html, zeddiOS, 소들이, hayeon

[Swift] Initialization + Convenience init 이란?

Swift에서는 super class에서 상속받은 프로퍼티들을 포함하여, 모든 저장 프로퍼티가 초기 값을 가질 수 있도록 Class 유형에 대해 두 가지 종류의 초기화를 정의한다. 그 두가지가 바로 흔히 init으로 사용하는 기본 Designated init, 그리고 Convenience init. init 에서는 모든 저장 프로퍼티가 반드시 초기화되어야하는데, Convenience init은 init의 파라미터 중 일부를 임의의 기본값으로 설정해서 오류가 나지 않도록 도와주는 보조 이니셜라이저. * init의 보조이기 때문에 미리 선언한 init을 활용해서 사용해야 한다. convenience init 딱히 필요성을 잘 모르겠어서 왜 쓰나 싶었다. custom collectionView cell 만들때..

728x90
반응형