iOS 개발 JSpatch 온라인 열 복구 기술 안내
JSpatch 의 기본 원 리 는 JS 가 OC 에 문자열 을 전달 하고 OC 는 Runtime 인 터 페 이 스 를 통 해 OC 를 호출 하고 교체 하 는 방법 이다.
JSpatch 는 App 에서 작업 프로 세 스: 시작 할 때마다 app Delegate 에서 서버 에 js 파일 을 요청 합 니 다. 서버 에 있 는 js 파일 버 전과 app 로 컬 버 전이 다 르 면 새로운 패 치가 실 행 될 것 임 을 증명 합 니 다.최신 js 파일 을 로 컬 에 다운로드 하고 열 복 구 를 진행 합 니 다.
JS 는 OC 코드 를 어떻게 바 꿉 니까? OC 의 메시지 전송 메커니즘 을 이용 합 니 다.(이 부분 이 이해 되 지 않 는 경우 좌회전 하면 runtime 프로필 이 있 습 니 다) 1. 기 존의 selector 의 IMP 를 교체 하여 빈 실현 으로 실현 합 니 다. 이렇게 하면 obbc클 라 스 는 메 시 지 를 받 으 면 메 시 지 를 전달 합 니 다.2. 교 체 된 JS 방법 을 JSselector 와 IMP 로 구성 하여 현재 class 에 3 을 추가 한 다음 에 각 교체 방법 류 의 forwadInvocation 의 실현 을 바 꾸 어 차단 합 니 다.차단 한 Invocation 의 selector 가 JSselector 로 바 뀌 면 응답 할 수 있 습 니 다. 바 꿀 대상 방법 임 을 설명 합 니 다. Invocation 에서 파 라 메 터 를 꺼 낸 후 JSselector 의 IMP 를 호출 하여 이 루어 집 니 다.
demo: 1 을 간단하게 사용 하여 가기http://jspatch.com 플랫폼 등록 응용 프로그램 은 appkey 및 sdk 2 를 획득 하고 JSpatch. framework, libz 및 JavaScriptCore. framework 3 를 가 져 옵 니 다. 로 컬 테스트 만 진행 하면 AppDelegate. m 에서 [JSpatch testscriptInBundle] 을 호출 합 니 다.서버 테스트 를 진행 하려 면 [JSpatch startWithAppKey: @ "]; /패 치 업데이트 확인 [JSpatch sync];4. main. js 파일 을 새로 만 들 고 패 치 내용 을 작성 합 니 다.다음 코드 는 온라인 에서 ViewController 의 view 의 backgroundColor 를 빨간색 으로 바 꾸 는 js 코드 를 보 여 줍 니 다.testJSPatch 방법 을 정의 하고 방법 에 색상 을 설정 합 니 다.그리고 view DidLoad 방법 에서 호출 합 니 다.
require('UIColor');
defineClass('ViewController', {
viewDidLoad: function() {
self.super().viewDidLoad();
self.testJsPatch();
},
testJsPatch: function() {
self.view().setBackgroundColor(UIColor.redColor());
},
});
문법 을 깊이 공부 하고 싶 지 않 고 사용 하고 싶 은 친구 가 도착 할 수 있 습 니 다.https://github.com/bang590/JSPatchConvertor 언어 변환 기 를 다운로드 하고 oc 코드 를 잘 쓰 면 복사 하면 해당 하 는 js 코드 를 자동 으로 생 성 할 수 있 습 니 다.주의해 야 할 것 은 oc 코드 에 NSLog 가 포함 되 어 있 지 않 습 니 다.
사용 중의 주의 점: 1. 전송 안전: JS 스 크 립 트 는 임의의 OC 방법 을 호출 할 수 있 고 권한 이 매우 크 며 중개인 의 공격 으로 코드 를 교체 하면 비교적 큰 위 해 를 입 힐 수 있 습 니 다.해결 방법: RSA 검 사 를 사용 합 니 다.
2. 실행 안전: 다음 에 보 내 는 JS 스 크 립 트 의 유연성 이 크 고 작은 업데이트 에 해당 하 며 충분 한 테스트 를 하지 않 으 면 crash 등 상황 이 발생 하여 앱 의 안정성 에 영향 을 줄 수 있 습 니 다.해결 방법: 1. 모든 사용자 에 게 한꺼번에 보 내지 않 고 점차적으로 보 냅 니 다.2. 후퇴 를 진행한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.