찾다

 >  Q&A  >  본문

objective-c - NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?

NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?

迷茫迷茫2769일 전376

모든 응답(1)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-21 11:19:58

    질문을 이해합니다. 하지만 질문하신 내용은 컴파일 타임 개체에 대한 개념이 전혀 정확하지 않습니다.

    우선, NSString *testObject 선언은 컴파일러에게 testObject이 Objective-C 객체에 대한 포인터임을 알려줍니다. 어떤 종류의 객체를 가리키든 포인터가 차지하는 메모리 공간은 고정되어 있으므로 어떤 종류의 객체로 선언하더라도 최종 생성되는 실행 코드에는 차이가 없을 것이다. 여기서 NSString 정의는 testObjectNSString으로 확인하도록 컴파일러에 지시합니다. 나중에 NSString이 아닌 메서드가 호출되면 경고가 생성됩니다.

    다음으로 NSData 개체를 만들고 이 개체의 메모리 주소를 testObject에 저장합니다. 그런 다음 런타임 시 testObject가 가리키는 메모리 공간은 NSData 개체입니다. testObjectNSData 객체로 사용할 수 있습니다.

    회신하다
    0
  • 취소회신하다