The underlying reasons for this is the combination of:
[1] Objective-C ( C) . , ( ) . , , , , NSNumber *, , , , id. , . .
[2] Objective-C , . , number NSNumber NSDate . bar :
void (^bar)(NSNumber *) = ^(NSNumber *number)
{
NSLog(@"Value is %@, class is %@, int value is %d.", number, [number class], [number intValue]);
};
.
[3] [NSNumber numberWithInt:10], [NSDate date], id, NSNumber * NSDate *, . , foo, :
bar([NSDate date]);
- ... :
NSNumber *num = [NSNumber numberWithInt:3];
NSDate *date = num;
id erase = num;
date = erase;
: Objective-C , , .