2012-07-05 2 views
1

내가 필요한 공통 기능을 가진 유틸리티 클래스를 만들고 싶습니다. 따라서 메모리는 누설되지 않고 정적이어야합니다.일반적인 도우미가있는 유틸리티 클래스를 만드는 방법은 무엇입니까?

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
[f setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSNumber * myNumber = [f numberFromString:@"42"]; 
[f release]; 

이 어떻게 결과를 반환 할 수 있으며, 누설하지 :

내가의 NSNumber에있는 NSString 변환이 기능을 추가하고 싶어 말?

이 용도로 autorelease를 사용해야합니까?

답변

3

소유권이 확실하지 않은 개체를 반환 할 때 메모리 누수를 방지하려면 autorelease을 사용하십시오. NSNumbernumberFromString: 메서드는 자동 완성 된 값을 이미 반환하므로 사용자의 경우에는 특별한 작업을 수행 할 필요가 없습니다. 다른 클래스의 객체로, 당신은이 작업을 수행 할 수 있습니다 : 당신은 ARC를 사용하는 경우이 중 하나를 수행 할 필요가 없습니다

MyClass *ret = [[[MyClass alloc] initWithSomeValue:42] autorelease]; 

참고 : 컴파일러가 당신을 위해 그것의 대부분을 알아낼만큼 똑똑하다.

Java/C++/C#의 Objective C 정적 메서드는이라는 클래스라고합니다. 선언문에 - 대신 +으로 표시하고 구현에서 인스턴스 메소드에 액세스 할 수 없음을 기억하십시오. 헤더에서

:

@interface MyHelper : NSObject 
+(NSString*)format:(NSNumber*)num; 
@end 

구현에서 :

@implementation MyHelper 

+(NSString*)format:(NSNumber*)num { 
    return [num stringValue]; 
} 

@end 
+0

당신이 설정 정적 메서드가있는 유틸리티 클래스에 얼마나 저를 보일 수 있는가? – loyalflow

+1

@ user1361315 예, 편집을 한번보세요. – dasblinkenlight

관련 문제