Очень странная проблема с NSString - PullRequest
1 голос
/ 21 декабря 2010

Очень странное поведение этой функции,

void* getNSString(const NSString* str){

str = @"This is new test";
//NSString* str1 = @"so strange test";

return;
}

Тогда

NSLog(@"%@",getNSString(@"test"));

Результат будет

This is new test

если раскомментировать

NSString* str1 = @"so strange test";

Насколько я понимаю, ничего не возвращается, так что это должно быть NULL, зачем распечатывать эти строки?

Тогда результат будет

so strange test

Ответы [ 2 ]

10 голосов
/ 21 декабря 2010

Я не верю, что ничего не возвращается.Я считаю, что это не определено.Другими словами, все может быть возвращено.

В этом случае похоже, что он возвращает то, что было в стеке в данном месте.Это одна из строк, которую вы изменили или создали, но я могу заверить вас, что это удачная авария (или неудачная, поскольку сбой, вероятно, будет лучше).

Если вы не хотите, чтобы ничего не возвращалось, вам нужноизменить:

void* getNSString(const NSString* str){

на:

void getNSString(const NSString* str){
0 голосов
/ 21 декабря 2010

какао / цель c делает так .... Я тоже сталкивался с такой проблемой раньше,

например:

-(NSObject*) someMethod () 
{  ...

   NSString* result =@"some value"; 
   // because too busy ,I just forgot write the return statement during dev :)
} 

хотя ничего не возвращалось, как в коде выше, но приложение также может возвращать значение результата ....

это очень смешно ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...