ios jscore двойной релиз - PullRequest
       11

ios jscore двойной релиз

0 голосов
/ 15 сентября 2018

Я делаю библиотеку исправлений на основе jscore,

сегодня я обнаружил странную проблему,

весь проект для тестирования есть: https://github.com/galenzhao/jshotfix/releases/download/test0.1/test.zip

код ключа как этот:

NSString *fixScriptString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"5.0.5" ofType:@"js"] encoding:NSUTF8StringEncoding error:nil];

NSLog(@"js patch:\n%@", fixScriptString);
[Felix evalString:fixScriptString];

TTTTViewController *vc = [[TTTTViewController alloc] init];
NSString *b=nil;//=[vc formatCityStr:@"PEK"];
[vc hook:@"123"];
NSString*c=[vc hookstr:@"098"];

//[vc formatDateStr:@"05/29/2015"];
NSString *a=[vc formatDateStr:@"04/29/2015"];

NSLog(@"\n%@,%@\n%@,%@, %@",a,b,a.class,b.class, c);

первый функционал (hookstr :) работает хорошо,

но сбой при formatDateStr:

//04/29/2015 -> 20150429
- (NSString *)formatDateStr:(NSString*)orgDateStr {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat: @"MM/dd/yyyy"];

NSDate *orgDate = [dateFormatter dateFromString:orgDateStr];

if (orgDate == nil) {
    [dateFormatter setDateFormat: @"MM/dd/yyyy HH:mm:ss"];
    orgDate = [dateFormatter dateFromString:orgDateStr];
}

[dateFormatter setDateFormat: @"yyyy-MM-dd"];

NSString *b=[dateFormatter stringFromDate:orgDate];
NSLog(@"%@",b);
return b;

}
- (void)hook:(NSString*)abc{
NSLog(@"not hook:%@", abc);
}
- (NSString*)hookstr:(NSString*)abc{
NSLog(@"not hookstr:%@", abc);
return [NSString stringWithFormat:@"%@%@",@"222", abc];
}

по включённому zombie obj,

там написано, что строка была дважды освобождена,

2018-09-15 14:33:06.278717+0800 test[79311:985641] *** -[CFString retain]: message sent to deallocated instance 0x600000234d60

Я очень смущен.

кто-нибудь может мне помочь?

спасибо.

...