2012-06-28 2 views
1

Что-то странное происходит. Когда я переназначаю NSString для моей переменной подстроки в нижней части моего кода. Кажется, что значение subString пусто в выводе. Я не знаю, возвращает ли objectAtIndex что-то странное или проблема с памятью. Если я создаю новую переменную вместо переназначения значения subString, я могу напечатать, увидев правильное значение в выходной консоли. Если бы кто-нибудь мог помочь мне понять это. Было бы очень благодарно.NSString Значение переменной исчезает после переназначения

NSString *subString = @""; 
if ([text length] > 0) 
{ 
    UITextRange *selectedRange = [_textView selectedTextRange]; 
    UITextPosition *cursorPosition = [_textView positionFromPosition:selectedRange.start offset:0]; 
    UITextRange *subTextRange = [_textView textRangeFromPosition:_textView.beginningOfDocument toPosition:cursorPosition]; 
    subString = [textView textInRange:subTextRange]; 
} 

NSLog(subString); 
NSLog(@" %s", [subString hasSuffix:@" "] ? "TRUE" : "FALSE"); 
BOOL hasSpaceSuffix = [subString hasSuffix:@" "]; 
NSLog(@" %s", _taggingInProgress ? "TRUE" : "FALSE"); 
NSArray *substringArray = [[subString componentsSeparatedByString:@" "] retain]; 
if ([substringArray count] > 1) { 
    int index = [substringArray count]; 
    if ([[substringArray objectAtIndex:index-1] isEqualToString:@" "]) 
    { 
     NSLog(@"1st"); 
     subString = [substringArray objectAtIndex:index-2]; 
     NSLog(subString); 
    } 
    else 
    { 
     NSLog(@"2nd"); 
     subString = [substringArray objectAtIndex:index-1]; 
     NSLog(subString); 
    } 
    NSLog(@"AFTER"); 
    NSLog(subString); 
} 
+0

Попробуйте использовать 'retain' в обоих назначений и посмотреть, если значение получает проводятся. НАПРИМЕР. 'subString = [[substringArray objectAtIndex: index-2] сохранить];' – eazimmerman

+0

Не работает: '( – coolio

+0

вы можете разместить вывод, который вы получаете? 1/2/AFTER? – sergio

ответ

0

Я думаю, вам нужно использовать:

subString = [NSString stringWithString:[substringArray objectAtIndex:index]]; 

... фиксированный ...

+1

' index' не является строкой ... – Chuck

+0

Спасибо Чак ... – Jamie

Смежные вопросы