2010-07-14 1 views
0

[self updateTheValue]을 사용하여 잠시 동안 호출 한 updateTheValue()이라는 함수가 있습니다. 최근에는 두 가지 일이 발생했습니다. viewDidLoad() 메서드에서 호출하는 메서드를 추가하고 내 클래스가 이에 응답하지 않을 수도 있다는 경고를 내 보냅니다. 둘째, 객체를 문자열처럼 updateTheValue()에 전달하려고하지만 대부분 int이므로 NSObject를 메서드에 전달하도록 선언했습니다. NSObject 슬롯에 int를 넣을 수 있습니까? 아니면 대신 사용해야합니까?NSObject 및/원인 클래스를 사용하는 iPhone Int는 자체를 참조 할 수 없습니다.

나는 별도로이 게시했을하지만 그들은 이후 관련이있을 것 같습니다이 함수는 내 수업이

답변

3

이 같이 당신의 방법을 만들 수 :

[self updateTheValue:[NSNumber numberWithInt:42]]; 

내가 즉 updateTheValueWithInt:updateTheValueWithString: 쉽게 읽을 수있게하지만 두 가지 방법을하는 게 좋을 것 :

-(void)updateTheValue:(NSObject *)anObject 
// or use -(void)updateTheValue:(id)anObject 
{ 
    if ([anObject isKindOfClass:[NSString class]]) { 
     // Do your string handling here 
    } 
    else if ([anObject isKindOfClass:[NSNumber class]]) { 
     // Do your number handling here 
    } 
} 

이처럼 사용 이해해.

사용하기 전에 메서드 서명을 표시해야 컴파일러에서이 작업을 알 수 있습니다.

별도의 방법을 사용하는 경우 intNSNumber 개의 개체로 직접 묶지 않고 사용할 수 있습니다.

+0

동의합니다. Objective-C에서는 이질적인 클래스를 허용하기 위해'id' 타입의 인자를 가진 메소드를 생성하는 것이 일반적이지 않습니다. 두 가지 방법이있는 것이 훨씬 더 일반적입니다. –

+0

감사! NSNumber 래퍼는 훌륭하게 작동하며, 정수를 비롯하여 화면상의 텍스트 필드에 문자열을 보낼 수 있기 때문에 훨씬 쉽게 사용할 수 있습니다. 내 코드가 둘 다 처리 할 수 ​​있기 때문에 NSObject 유형을 구분할 필요조차 없었습니다. – SeniorShizzle

1

먼저 문제를 "-updateTheValue에 응답하지 않을 수 있습니다"오류를 밝혀에 NSObject의마다 기준을 적용 updateTheValue()를 업데이트 한 후 :

updateTheValue()는 호출하기 전에 선언해야합니다.

당신은 그것을 호출하기 전에 함수의 정의를 이동하거나 상단에 프로토 타입을 추가 할 수 있습니다

- 추가, 예 :

  • (무효) updateTheValue;

상단 부근.

번째 문제 :

사용의 NSNumber 예 [numberWithInt의 NSNumber : 45];