당신이 값을 반환 할 경우, 값을으로 반환하십시오. Cocoa/iOS에서 참조에 의한 패스는 주로 NSError**
으로 제한됩니다. 을 감안할 때
:
+(void)fileName:(NSString *) file
는 다음을 수행하십시오
+(NSString *) fileName;
그리고는 그것을 함께 할 수.
한 번에 둘 이상의 값을 반환해야하는 경우 구조 또는 더 자주 클래스를 요구합니다.
Objective-C에서 참조로 전달하는 것은 잘못하고있는 것처럼 냄새가납니다. 오브젝티브 C 참조하여
패스는 메서드의 반환 값 자체가 요청 된 작업이 성공 또는 실패 여부를 나타냅니다 복구 실패에 대한 NSError*
정보를 반환하기위한 대부분 예약되어 (당신은 NULL
를 전달할 수 있습니다 상기 방법이 상기 에러 메타 데이터의 생성을 최적화하는 것을 허용하는 인수는 NSError**
).
참조로 전달은 반환 값이 사실상 다중 값인 객체의 내부 상태를 검색하는데도 사용됩니다. 나는. AppKit의 메소드는 다음과 같습니다. 이 경우, 참조 전달 인수는 일반적으로 선택적이거나 2 차 리턴 값으로 작용합니다.
API를 통해 거의 사용되지 않습니다. 참조 용으로 사용하는 것은 확실하지만 위와 같이하면 응용 프로그램 코드에서 매우 드물고 희귀해야합니다. 많은 경우와 아래의 경우에 잠재적으로 더 나은 패턴은 상태를 캡슐화 한 다음 참조로 전달하는 대신 클래스의 인스턴스를 반환 할 수있는 클래스를 만드는 것입니다.
NSWorkspace.h:- (BOOL)getInfoForFile:(NSString *)fullPath application:(NSString **)appName type:(NSString **)type;
NSTextView.h:- (void)smartInsertForString:(NSString *)pasteString replacingRange:(NSRange)charRangeToReplace beforeString:(NSString **)beforeString afterString:(NSString **)afterString;
NSAttributedString.h:- (BOOL)readFromURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary **)dict;
NSNib.h:- (BOOL)instantiateWithOwner:(id)owner topLevelObjects:(NSArray **)topLevelObjects NS_AVAILABLE_MAC(10_8);
NSSpellChecker.h:- (NSRange)checkGrammarOfString:(NSString *)stringToCheck startingAt:(NSInteger)startingOffset language:(NSString *)language wrap:(BOOL)wrapFlag inSpellDocumentWithTag:(NSInteger)tag details:(NSArray **)details NS_AVAILABLE_MAC(10_5);
+1 메서드 호출은 [function fileName : & file] –
으로 변경되어야합니다. @bbum : 매개 변수 *는 입력/출력 매개 변수 일 수 있지만 그 때도 가능합니다. . . – dreamlax