So i did a little research and executed this:
NSNumber *foo = [NSNumber numberWithBool: YES];
NSLog(@"encode BOOL: %s", @encode(BOOL));
NSLog(@"encode boolean: %s", @encode(Boolean));
NSLog(@"encode bool: %s", @encode(bool));
NSLog(@"encode char: %s", @encode(char));
NSLog(@"object: %s", [foo objCType]);
and got this result in the 64bit-simulator:
encode BOOL: B
encode boolean: C
encode bool: B
encode char: c
object: c
and this on the 32bit-simulator
encode BOOL: c
encode boolean: C
encode bool: B
encode char: c
object: c
So the problem was, that on 32bit, encode(BOOL) returns a 'c', but on 64 bit, it returns a 'B', while objCType
on a numberWithBool:
will give you a 'c' on both 64bit and 32bit.