예를 들어, 다음 예제를보십시오.나중에 리턴 될 인스턴스 메소드에서 오브젝트를 할당하는 권장 방법은 무엇입니까?
-(NSString*)getString{
return [[NSString alloc] initWithFormat:@"test"];
}
-(void)printTestString{
NSString *testStr = self.getString;
NSLog(@"%@",testStr);
[testStr release];
}
코드 1과 코드 2는 유효한 코드 조각이어야하며 누수가 없어야합니다.
코드 1은 autorelease를 사용하므로 반환 변수는 printTestString에 유지되어야하고 사용 후에는 해제되어야합니다. 따라서 여기에 작은 오버 헤드가 있습니다.
코드 2는 getString에서 NSString을 해제하지 않으므로 사용 후에 만 릴리스해야합니다. 적은 양으로 작성해야하고 autorelease가 사용되지 않기 때문에 오버 헤드가 없습니다.
실제로 사용되는 사실상의 "표준"접근법은 무엇입니까?
나 자신에게 묻고 있었던 또 다른 물건. autorelease 풀이 변수를
NSString *testStr = self.getString;
다음에 바로 해제하면 getString의 autorelease와
이 문제가 될 수 있습니까? 그럴 수 있습니까 아니면 컴파일러는 그런 종류의 일을 방지합니까?
고마워요
- 보보
@MusiGenesis Obj-C가 마음에 들지 않으면 프로그램을 작성하지 말고 사람들의 Obj-C 질문에 대답하지 마십시오. – jakev
@ JakeVA 감사합니다! – Sebo