当我在运行时使用objc_msgSend时,为什么?

时间:2017-05-12 07:56:10

标签: ios runtime exc-bad-access

这很好用 return [[DJLocalizationSystem shared] localizedStringForKey:(key) value: @"" table: nil bundle:bundle];
但是,这不起作用 return objc_msgSend([DJLocalizationSystem shared], @selector(localizedStringForKey:value:table:bundle:),(key),@"",nil,bundle);
并且该方法返回一个字符串值。
enter image description here

EXC_BAD_ACCESS,代码= 1,地址= 0x8
有一个类似的问题stackoverflow,但我认为没有一个答案是正确的。它与0x8无关。

1 个答案:

答案 0 :(得分:0)

objc_msgSend在32位iPhone和模拟器中运行良好,但在64位iPhone中,你必须指出类型。所以我的代码是
NSString *(*action)(id, SEL, NSString *, NSString *, NSString *, NSBundle *) = (NSString * (*) (id, SEL, NSString *, NSString *, NSString *, NSBundle *) ) objc_msgSend; action(system, @selector(localizedStringForKey:value:table:bundle:), (key), @"", nil, [NSBundle bundleForActionCamera]);