我在尝试记录 NSDictionary 内容时遇到问题,一旦调用该方法,应用程序就会崩溃。
这是我在一位才华横溢的“黑客”的建议下尝试过的代码:
%hook UserData
-(int)getVariable:(NSDictionary *)fp8 {
for (NSString *key in [fp8 allKeys]) {
%log(@"key: %@, value: %@ \n", key, [fp8 objectForKey:key]);
}
return %orig;
}
%end
也试过:
%hook UserData
-(int)getVariable {
int originalValue = %orig;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSError *error;
[[fp8 description] writeToFile:[NSString stringWithFormat:@"%@/lol_%d.txt",basePath,fp8.count] atomically:NO encoding:NSUTF8StringEncoding error:&error];
return %orig;
}
%end
这两种方式都会导致应用程序崩溃。这是在带有 ios 6.1.3 系留 JB 的 iphone 4 上。
DoD EN[1000]: -[__NSCFConstantString allKeys]: unrecognized selector sent to instance 0x2a7a88
DoD EN[1000]: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString allKeys]: unrecognized selector sent to instance 0x2a7a88'
*** First throw call stack:
有人对这里可能有什么问题有什么建议吗?