1.通过setValue:forKey:为对象属性赋值时,属性的真正类型是由value的类型决定,,

例:

@property (nonatomic, strong) NSString  *praise;

[self setValue:@(20) forKey:@"praise"];

则praise的真正类型是NSNumber类型,,,

 

2.当value的类型和相应属性的类型为不同的基本数据类型时,最终数据类型由相应属性的类型决定,,(自动转换)

例:

@property (nonatomic ,assign) long      praise;

[self setValue:@(20.38294) forKey:@"praise"];

则praise的真正类型是long类型,,,20

@property (nonatomic, assign) CGFloat  praise;

[self setValue:@(20) forKey:@"praise"];

则praise的真正类型是CGFloat类型,,,20.000000