안녕하세요 저는 간단한 목표를 가지고 있습니다. 저는 회사 코드베이스를 살펴 봤고 재미있는 것을 발견했습니다. 언제 [[alloc] init]을 사용해야하며 언제 그렇지 않아야합니까?objective-c에서 alloc init을 사용하는 경우
사례 1 :
NSString *url = nil;
url = @"hi";
사례 2 : 여기에 전형적인 예이다
NSString *url = [[NSString alloc] init];
url = @"hi";
그래서 사례 2 사용해야 할 때 케이스 1 사용해야합니까? 누군가가 나를 위해 일단이 모든 것을 해결할 수 있기를 바란다. 내 앱 개발 전반에 걸쳐 나는 C++ (기본적으로 객체 생성자를 호출)에서 "새로운"을 호출하는 것과 같다고 생각했기 때문에 Case 2를 사용했다. 케이스 1은 해당 객체에 대한 생성자 또는 메모리 할당의 호출을 나타내지 않으므로 케이스 1조차도 작동한다는 것이 충격적입니다. 사례 1은 내가보고있는 코드 기반 어디에서나 사용된다.
Objective-C에 C++ 메 커닉을 적용하지 마십시오. ObjC는 C++과 달리 연산자 오버로딩을 제공하지 않으므로 Objc 객체 (예 : 내부 값 할당)의 조작은 항상 해당 클래스와 연결된 메서드를 통해 수행되며 '='연산자는 사용하지 않습니다. –
또한'[[... alloc] init '을 사용하는 대신'[... new]'를 사용할 수도 있지만, 처음에는 당신이 쓸데없는 부분을 – aguilarpgc