2012-06-20 3 views
1

Я видел этот блок кода в этом Stackoverflow в качестве ответа на какой-то вопрос, я попытался внедрить его в свой код, но я не понимаю, какая функция это и как могу ли я назвать этоКак вызвать этот метод в объекте c

NSString * ReplaceFirstNewLine(NSString * original) 
{ 
    NSMutableString * newString = [NSMutableString stringWithString:original]; 

    NSRange foundRange = [original rangeOfString:@"\n"]; 
    if (foundRange.location != NSNotFound) 
    { 
     [newString replaceCharactersInRange:foundRange 
           withString:@""]; 
    } 
    NSLog(@"%@",newString); 
    return [[newString retain] autorelease]; 
} 

я попытался назвать это как [self ReplaceFirstNewLine(@"\nstirng\nstring")]; но его дает синтаксическую ошибку, может ли один помочь мне

ответ

8

Прежде всего, это не method, это C function, аналогично NSLog, поэтому используйте его как таковое:

NSString *results = ReplaceFirstNewLine(@"\nstirng\nstring"); 
NSLog(@"%@", results); 

C-стиль-функция имеет свои преимущества и недостатки, и я постараюсь перечислить некоторые из них:

Преимущества:

  • Скорости. Функция C почти ВСЕГДА быстрее, чем эквивалентный метод объектива-c, потому что нет никакой динамической отправки, необходимой для вызова функции

  • Указатели. Это намного проще, чтобы получить указатель на функцию C-типа, чем к методу Objective-C, что делает его гораздо лучше подходит для C обратных вызовов API

Недостатки:

  • Ивар. В функции C вы не можете получить доступ к частным переменным объекта (даже со ссылкой на него), не используя мастерство во время выполнения, в этот момент это действительно не стоит.

  • Нет концепции self. Вы не можете использовать переменные self (или _cmd, если на то пошло) внутри функции C, поскольку каждая функция C не зависит от других функций внутри вашего продукта.

+0

@ Ричард спасибо за ур ответ – Ravi

+0

@Richard Могли вы, пожалуйста, скажите, что это за функция. Я только знаю о методах вида - (NSString) replaceFirstNewLine {....}; Кажется, это функция стиля C. Не могли бы вы предоставить какой-то ресурс, на который я могу ссылаться. Заранее спасибо. – rakeshNS

+0

@Ravi приветствуется. Не забудьте проголосовать и принять ответ, хотя! Это помогает другим найти это легче. –

0

Вы назвали бы это так: ReplaceFirstNewLine(@"");

0
- (NSString *) ReplaceFirstNewLine(NSString * original){ 
    //... 
} 

Теперь вы должны быть Абэ назвать его как метод:

[self ReplaceFirstNewLine(@"\nstirng\nstring")]; 
Смежные вопросы