현재 API와 개발자 간의 상호 작용을 돕기 위해 iOS 용 객관적인 c 프레임 워크를 만드는 중입니다. 이 일환으로 개발자가 정보를 사용자에게 표시하는 데 사용할 수있는 다양한 읽기 전용 객체 배열을 반환합니다. 그러나 사용자에게 표시되는 개체가 프레임 워크에서만 제공되고 프레임 워크를 사용하여 개발자가 인스턴스화 할 수 없도록하고 싶습니다.프레임 워크에서 읽기 전용 객체의 인스턴스화 방지
현재 구현에서는 사용자 정의 생성자 초기화 프로그램을 사용하여 api에서 JSON을 가져 와서 인스턴스를 생성합니다. 내가 사용자 정의 생성자 초기화 프로그램에 액세스하는 것을 알고있는 유일한 방법은 헤더 파일에 정의를 넣는 것입니다.이 정의는 헤더 파일에 저장되어 개발자뿐만 아니라 개발자도 액세스 할 수 있습니다. 사용자가 기본 생성자 이니셜 라이저, -(id)init;
을 사용하려고하면 불일치 예외가 발생할 수 있지만 자신의 JSON 문자열을 만들지 못하게하고 사용자 정의 생성자 이니셜 라이저를 호출 할 수 없습니다.
개인 프레임 워크를 사용하는 개발자의 방해로부터 개인 프레임 워크를 보호하기위한 올바른 접근 방법을 취하고 있습니까? 이러한 객체에서 데이터의 유효성을 확인하기 위해이 문제를 어떻게 해결할 수 있습니까?
출처 : Is it possible to make the -init method private in Objective-C?
이것은 약간의 패배와 같습니다. 읽은 것처럼 다른 클래스가 객체에서 특정 메소드를 호출하지 못하게하는 방법은 없습니다. 왜 당신이 제외한 모든 클래스가 인스턴스화되지 않는 것이 중요합니까? 극단적 인 방법으로 웹 서비스에서 데이터를 가져 오는 경우 프레임 워크에서 객체를 사용하기 전에 서버 측에서 JSON에 암호화 방식으로 서명하고 서명을 확인할 수 있습니다. 그러나 이것은 [XY 문제] (http://meta.stackexchange.com/a/66378/201130)와 조금 비슷합니다. – bdesham
개발자가 문제를 일으켜 프레임 워크를 해결하려고하는 경우에 따라 이것이 향후 사용을 고려하는 경로 일 수 있습니다. 제안 해 주셔서 감사합니다. – Krejko