2016-06-08 2 views
0

Я новичок в программировании и объективности C, извините, я должен задать этот основной вопрос. Я не могу понять строки кода ниже. Зачем мне нужно использовать знак & для диапазона при оценке атрибутов? но не использовать его, когда я снова вызываю атрибут? это потому, что первый из них - сеттер, а второй - getter?Доступ к атрибутам

Спасибо за ваши советы в авансах!

-(NSAttributedString*)characterWithAttribute: (NSString*)attributeName{ 
    NSMutableAttributedString* characters = [[NSMutableAttributedString alloc]init]; 

    int index = 0; 

    while(index < [self.textToAnalyze length]){ 

     NSRange range; 

     id value = [self.textToAnalyze attribute:attributeName atIndex:index effectiveRange:&range]; 

     if(value){ 

      [characters appendAttributedString:[self.textToAnalyze attributedSubstringFromRange:range]]; 
      index = (int)range.location + (int)range.length; 
     } 
     else{ 
      index++; 
     } 
    } 

    return characters; 
} 

ответ

0

это потому, что первый из них является сеттер и второй из них является геттер?

В принципе, да. Амперсанд указывает адрес переменной, а не значение. Когда вызываемая процедура имеет адрес, она может присвоить ей значение, которое вы сможете использовать, когда оно вернется. Если вызываемая процедура имела только значение, она не сможет заменить ее каким-либо образом, доступным для вызывающего.

Вот ссылка, которая может дать вам более углубленное ПОДРОБНОСТИ: https://www.codingunit.com/c-tutorial-call-by-value-or-call-by-reference

+0

благодаря Филиппу для объяснения и ссылки –

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