我写了个demo,故意有个bug,通过热修复去修改,代码如下:

[Swift] 纯文本查看 复制代码
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = self.array[indexPath.row + 1];  //此次+1会导致溢出  崩溃。
    return cell;
}


通过js去热修复:

[Swift] 纯文本查看 复制代码
require('UITableViewCell');
defineClass('ViewController', {

    tableView_cellForRowAtIndexPath: function(tableView, indexPath) {
    var cell = tableView.dequeueReusableCellWithIdentifier("cell");
    if (!cell) {
        cell = UITableViewCell.alloc().initWithStyle_reuseIdentifier(0, "cell");
    }
        cell.textLabel().setText(self.array()[indexPath.row()]);
        
        return cell;
     },

});


运行后:

[Swift] 纯文本查看 复制代码
2016-09-07 14:28:52.263 quweigou[1455:109693] JSPatch: runScript
2016-09-07 14:28:52.266 quweigou[1455:109693] JSPatch: request [url]http://q.jspatch.com/d3d20e401cf[/url] ... v=1473229732.266873
2016-09-07 14:28:52.538 quweigou[1455:109735] JSPatch: request success {
    v = 9;
}


应该是修复成功, 但此时 self.array里面没数据  我估计可能是执行顺序问题, 先执行了js 此时array还是空, 我要怎么去修改呢?求解答。

iOS JSPatch热修复

iOS JSPatch热修复 - 敏捷大拇指 - iOS JSPatch热修复