2016-12-28 4 views
2

동영상에 Sound FX를 추가하는 iOS 앱이 있습니다. 이제 재고 사진 앱을 지원하는 앱 확장 타겟을 만들고 싶습니다. 그러나 iOS 앱의 거의 모든 코드를 복제해야합니다. 그리고 지금까지 가지고있는 솔루션은 AppDelegate에 연결된 앱의 일부 코드가 App Extension에서 사용할 수 없기 때문에 공통 파일을 공유 파일에 저장하고 두 대상 모두에 사용하는 것입니다. 이 경우 코드 중복을 피하는 더 좋은 방법이 있습니까?iOS 기존 앱에 앱 확장 기본 설정. 코드 중복을 피하는 방법?

한 가지 더 궁금한 점이 있습니다. AppStore에서 본 대부분의 확장 프로그램에는 1 개의 화면 만 있습니다. 이에 대한 규칙이 있습니까?

내 응용 프로그램에서는 사용자가 폴더 & 라이브러리에서 소리를 선택하게해야하며 내비게이션 컨트롤러가 필요합니다. 그러나 내비게이션 컨트롤러는 앱 확장에 사용할 수 없으므로 내비게이션 컨트롤러를 직접 만들어야합니까? 아니면 더 좋은 방법이 있습니까?

답변

1

iOS 7 이전 버전을 타겟팅 할 필요가없는 한 공용 클래스를 공유 프레임 워크에 넣고 두 프레임 모두에서 해당 프레임 워크를로드 할 수 있습니다. 이렇게하면 디스크에 두 개의 코드 인스턴스가 생기는 것을 피할 수 있습니다.

OS가 공유 라이브러리 로딩을 처리하는 방식 때문에 실제 코드 페이지가 모두 앱과 확장 프로그램간에 공유되므로 RAM을 낭비하지 않습니다.

+0

내 수업의 대부분은 View Controller이며 앱 확장자에서 사용할 수없는 App Delegate를 참조하는 클래스에서 –

+0

한 가지 해결책은 추상화 레이어를 추가하는 것입니다. 예를 들어, 흥미있는 데이터를 앱 델리게이트에 저장하는 대신에 저장하는 싱글 톤 클래스를 만들거나 앱에서 같은 이름을 가진 두 개의 클래스를 생성 할 수 있습니다. 애플 리케이션 델리게이트, 다른 메소드가 다른 일을하는 확장 기능에있는 또 다른 앱입니다. – dgatwood

+0

또 다른 접근법은 실제로 확장 기능에서 일부 기능을 필요로하지 않는다면 앱 위임 클래스와의 약한 링크 일 것입니다. 그런 다음 클래스 자체가 nil인지 확인하십시오. 확장 프로그램에서 실행 중이고 문제의 동작을 건너 뜁니다. – dgatwood