Я только что узнал из этого Stack & nbsp; Overflow post , как указывает Мартин-Гейслер, что вы можете сохранять файлы без спецификации в Блокноте Windows, выбрав ANSI как кодирование.
Я предполагаю, что для более продвинутых целей это не сработает, потому что полученный файл, вероятно, не является конечной кодировкой, но на самом деле ANSI; но я протестировал и подтвердил, что это работает, чтобы сохранить очень маленький .php-скрипт без спецификации, используя только «Блокнот».
Я узнал длинный и трудный способ, что «Блокнот Windows» не является истинным редактором, хотя мне бы хотелось указать на других, которые, несмотря на это, вводят в заблуждение, когда вы набираете «редактор» на более новых машинах Windows, по крайней мере, на одном из моих.
В настоящее время я использую Emacs и других редакторов для решения этой проблемы.
Полагаю, вы ищете:
+ (void)fileName:(NSString **)file
{
*file = @"folder_b";
}
На самом деле здесь мы работаем с указателем на указатель на объект. Проверьте руководство по языку C (да, простому C) на "pointer dereference" для получения дополнительной информации.
(...Но, как уже неоднократно отмечалось, в этом конкретном примере вообще нет причин передавать по ссылке: просто верните значение.)
.Если вы хотите вернуть значение, то верните значение. Передача по ссылке в Cocoa/iOS в основном ограничена NSError**
.
Given:
+(void)fileName:(NSString *) file
Then do:
+(NSString *) fileName;
And be done with it.
Если вам нужно вернуть более одного значения за раз, это требует структуры или, чаще, класса.
Передача по ссылке в Objective-C предназначена в основном для возврата NSError*
информации об устранимом сбое, где возвращаемое значение самого метода указывает на то, удалось или не удалось выполнить запрошенную задачу (вы можете передать NULL
в качестве аргумента NSError**
, чтобы позволить методу оптимизировать создание метаданных об ошибке).
Передача по ссылкам также используется для получения внутреннего состояния объектов, где возвращаемое значение фактически является многозначным. Т.е. методы из AppKit, подобные следующим. В этих случаях аргументы pass-by-reference обычно либо необязательны, либо выступают в качестве вторичных возвращаемых значений.
В 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);
Я подозреваю, что это потому, что NSString является неизменяемым. Вы пробовали NSMutableString?