티스토리 뷰
두 가지 질문이 있습니다. 하나의 질문이있는 것이 좋습니다.
그러나 차이로, @"2.5"
인 NSString
경우 @(2.5)
됩니다 NSNumber
. 텍스트 데이터와 숫자 데이터에는 큰 차이가 있습니다.
당신이 필요한 이유에 대해서는 NSNumber
이 아닌 것은 NSString
분명하다 : 커닝은 숫자 값입니다.
@ () 구문을 사용하여 임의의 C 표현식을 상자에 넣을 수 있습니다. 따라서 기본적인 산술 계산을 NSNumber
객체 로 바꾸는 것은 간단 합니다. 아래를 참조하십시오.
double x = 24.0;
NSNumber *result = @(x * .15);
NSLog(@"%.2f", [result doubleValue]);
NSNumber
개체를 @ ""문자열로 참조 할 수도 있지만 위의 예와 같이 계산할 수는 없습니다. 귀하의 경우에는 둘 다 허용되지만 여기서 계산은 차이가 있습니다.
사용할 때
@ "2.5"는 문자열처럼 동작합니다.
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@"2.8" forKey:@"Why"];;
NSString *a = [dictionary ValueforKey:@"Why"];
하지만 @ (2.8)을 사용하면 NSNumber처럼 동작합니다.
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@(2.8) forKey:@"Why"];;
NSNumber *a = [dictionary ValueforKey:@"Why"];
-------------------@ (2.8)은 NSNumber의 유형입니다.
@ "2.8"은 NSString 유형입니다.
유형과 값은 둘 다 달랐습니다.
출처
https://stackoverflow.com/questions/39930069
댓글