현재 책과 온라인 자습서를 읽거나 Apple 설명서를 참조하여 Objective-C를 배우려고하고 있지만 클릭하지 마십시오. 클래스에 대한 질문이 있는데, 사용 방법에 너무 많은주의를 기울이지 않고 잠시 동안 NSString을 사용하고 있습니다.Objective-C의 인스턴스화에 대해 이해
나는
다음ClasssName *varName = [[ClassName alloc]init];
당신이 부를 것이다 ... 위해 누군가가 같은 것을 먼저 인스턴스화하는 데 필요한 목표 - C에서 특정 클래스에서 메서드를 사용할 수 있도록하기위한 인상의 아래에 있었다 같은 방법은 ...
[varName someMethod];
그러나
합니다 ...있는 NSString 내가 예를 들어 여기에 우리가 일반적으로 사용하는 것이 방법이다, 지금은 조금 혼란 스러워요 사용하는 방법을 찾고NSString *someString = @"some text here";
[someString stringByAppendingFormat: @"some text = %d", 3];
수업에 관해 읽은 다음에 다음과 같이해야합니다. 일부 클래스는 방법을 사용하기 전에 인스턴스를 필요로하지 않는 이유
NSString *someString = [[NSString alloc]initWithString: @"some text here"];
[someString stringByAppendingFormat: @"some text = %d", 3];
누군가는 설명 할 수 있습니까?
문자열 리터럴 만 이진 파일로 컴파일됩니다. 새로운 객체 리터럴 (NSNumber, 사전 및 배열)은 기존의 편리한 생성자를 사용하여 런타임 중에 빌드되는 인스턴스를 만듭니다. –
동일한 인스턴스 제거는 컴파일러에서 보장하지 않는 최적화입니다. 두 개의 컴파일 단위가 서로 다른 인스턴스를 가질 수 있습니다. –
컴파일러는 일반 인스턴스를 리터럴 인스턴스화로 변환하지 않습니다. –