У меня возникла проблема, когда я пытаюсь зарегистрировать содержимое NSDictionary и как только метод будет вызван, приложение выйдет из строя.Ошибка приложения приложения iOS при попытке регистрации 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
Оба пути приводят к краху приложения. Это на iphone 4 с iOS 6.1.3 привязанным JB.
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:
Есть ли у кого-нибудь предложение о том, что здесь может быть неправильным?
На какой линии делает сбой приложения? Какова причина ошибки при сбое (EXEC_BAD_ACCESS? Что-то еще?) Также, каковы знаки «%» в вашем коде, который должен представлять? Я никогда не видел этого раньше в этом контексте. – user1118321
Вы говорите, что он сбой, но не содержит никаких сообщений об ошибке. –
Обратите внимание, что вы не регистрируете NSDictionary, а скорее запись из одного. –