国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

實(shí)現(xiàn)從服務(wù)器請(qǐng)求下發(fā)的JavaScript字符串的方法代碼

```objective-c- (void)requestJavaScriptFromServer { // 發(fā)送網(wǎng)絡(luò)請(qǐng)求獲取到JavaScript字符串 NSURL *url [NSU

```objective-c

- (void)requestJavaScriptFromServer {

// 發(fā)送網(wǎng)絡(luò)請(qǐng)求獲取到JavaScript字符串

NSURL *url [NSURL URLWithString:@""];

NSURLRequest *request [NSURLRequest requestWithURL:url];

NSURLSessionDataTask *task [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

if (error nil data ! nil) {

NSString *javascriptString [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// 將從服務(wù)器請(qǐng)求下來(lái)的JavaScript字符串執(zhí)行

[self evaluateJavaScript:javascriptString];

}

}];

[task resume];

}

- (void)evaluateJavaScript:(NSString *)javascriptString {

// 執(zhí)行修復(fù)方法

// ...

}

```

實(shí)現(xiàn)下載完成后同步的方式執(zhí)行修復(fù)的方法代碼

```objective-c

- (void)downloadAndExecuteJavaScript {

// 下載JavaScript文件

NSURL *url [NSURL URLWithString:@""];

NSData *data [NSData dataWithContentsOfURL:url];

NSString *javascriptString [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// 執(zhí)行修復(fù)方法

[self evaluateJavaScript:javascriptString];

}

- (void)evaluateJavaScript:(NSString *)javascriptString {

// 執(zhí)行修復(fù)方法

// ...

}

```

兩步合到一起的方法代碼

```objective-c

- (void)requestAndExecuteJavaScript {

// 發(fā)送網(wǎng)絡(luò)請(qǐng)求獲取到JavaScript字符串

NSURL *url [NSURL URLWithString:@""];

NSURLRequest *request [NSURLRequest requestWithURL:url];

NSURLSessionDataTask *task [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

if (error nil data ! nil) {

NSString *javascriptString [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// 執(zhí)行修復(fù)方法

[self evaluateJavaScript:javascriptString];

}

}];

[task resume];

}

- (void)evaluateJavaScript:(NSString *)javascriptString {

// 執(zhí)行修復(fù)方法

// ...

}

```

當(dāng)ViewController里有一個(gè)這樣的調(diào)用參數(shù)為nil時(shí)會(huì)導(dǎo)致崩潰方法代碼

```objective-c

- (void)someMethodWithParameter:(id)parameter {

// 當(dāng)parameter為nil時(shí),會(huì)導(dǎo)致崩潰

// ...

}

```

從服務(wù)器下發(fā)這段腳本來(lái)修復(fù)這個(gè)閃退替換join:b:方法代碼如下

```javascript

function() {

// 修復(fù)閃退的join方法

return ().split(',').join(arguments[0]);

};

```

App重新啟動(dòng)的時(shí)候--》會(huì)以同步的方式加載到該腳本--》并執(zhí)行修復(fù)的方法代碼如下

```objective-c

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 加載本地的JavaScript文件

NSURL *jsURL [[NSBundle mainBundle] URLForResource:@"jsPatch" withExtension:@"js"];

NSString *javascriptString [[NSString alloc] initWithContentsOfURL:jsURL encoding:NSUTF8StringEncoding error:nil];

// 執(zhí)行修復(fù)方法

[self evaluateJavaScript:javascriptString];

return YES;

}

- (void)evaluateJavaScript:(NSString *)javascriptString {

// 執(zhí)行修復(fù)方法

// ...

}

```

新App內(nèi)修復(fù)閃退問(wèn)題的技術(shù)實(shí)現(xiàn)方法

標(biāo)簽: