2014-04-19 2 views
1

아래 오류로 인해 왜 다음과 같은 추가 작업이 실패합니까?2 NSNumber를 추가하는 방법은 무엇입니까?

NSNumber *five = [NSNumber numberWithInt:5]; 
NSNumber *three = [NSNumber numberWithInt:3]; 
NSNumber *eight = [five intValue] + [three intValue]; 
의 NSNumber에 INT의

암시 적 변환 당신은이 작업을 수행 할 필요가

+0

이것에 대해 'NSNumber'를 사용할 이유가 없기 때문에 이것 만이 예일뿐입니다. – rmaddy

답변

5

를 사용하여 현대적인 구문 :

완성도를 위해서
NSNumber *five = @5; 
NSNumber *three = @3; 
NSNumber *eight = @([five intValue] + [three intValue]); 

: 오류가 int 값을 할당하려고에 의해 발생 변수 NSNumber. 값은 랩핑되어야합니다.

0

ARC으로 허용되지 :

NSNumber *eight = [NSNumber numberWithInt:([five intValue] + [three intValue])]; 

당신이 (예 : 추가 등) 숫자 작업 NSNumber을 사용하지 않도록 할 수있는 경우 및 대신 int 값을 사용하십시오. 마지막으로 필요할 때 NSNumber을 작성하십시오 (즉, 코코아 라이브러리 호출에서 사용).

0

[five intValue] + [three intValue]NSNumber 개체가 아니므로 int, 결과는 5 + 3입니다. 이것은 당신의 오류, Implicit conversion of int to NSNumber is disallowed with ARC

당신이 원하는 코드 줄은 설명 : NSNumber *eight = [NSNumber numberWithInt:[five intValue] + [three intValue]];

2

NSNumber에 할당 할 수는 없습니다. 당신은 int 값에서 NSNumber 개체를 인스턴스화하는 NSNumbernumberWithInt:를 사용해야 할 것 :

NSNumber *eight = [NSNumber numberWithInt:([five intValue] + [three intValue])]; 

또는 당신은 할 수 있습니다 :

NSNumber *eight = @([five intValue] + [three intValue]); 

하지만 당신없이 NSNumberint에서 변환 할 수 없습니다 일부 함수를 호출합니다.

관련 문제