Если вы хотите вернуть значение, то возвращает значение .Передача по ссылке в Какао / 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);