如果你想返回一個值,然後返回值。 Cocoa/iOS中的引用傳遞大部分限於NSError**
。
考慮:
+(void)fileName:(NSString *) file
然後做:
+(NSString *) fileName;
,並用它來完成。
如果您需要一次返回多個值,那麼需要一個結構或更經常的一個類。
在Objective-C中,通過引用來傳遞氣味,就像你做錯了一樣。
路過在Objective-C基準返回有關恢復故障,該方法的返回值本身就說明所請求的任務是否成功或失敗的NSError*
信息在很大程度上保留(你可以通過NULL
爲參數NSError**
允許該方法優化去創建所述錯誤元數據)。
傳遞引用也用於檢索返回值實際上是一個多值的對象的內部狀態。即來自AppKit的方法如下。在這些情況下,傳遞引用參數通常是可選的或者作爲次要返回值。
它們在整個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] – 2010-07-26 02:01:54
@bbum:參數*可能*是一個輸入/輸出參數,但即使如此。 。 。 – dreamlax 2010-07-26 03:42:47