Могу ли я написать метод класса Objective C, как это? - PullRequest
4 голосов
/ 07 сентября 2011

Для удобства использования я пишу категорию SBJsonParser с именем Addition:

@implementation SBJsonParser(Addition)

+ (NSDictionary *)parseJson:(NSData *)data {
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSDictionary *dict = [parser objectWithData:data]; 
    [parser release];
    return dict;
}

@end

Мои вопросы:

  1. Это правильно?
  2. Анализатор указателей в методе класса является статическим. Если нет, должен ли я объявить его статическим?
  3. парсер указателей нужно освободить?

Ответы [ 4 ]

2 голосов
/ 07 сентября 2011
  1. Выглядит хорошо, если вы точно знаете, что данные JSON содержат словарь, а не массив.

  2. Нет и нет. parser является локальным, и больше ничего не нужно, если метод -objectWithData: является синхронным.

  3. Да.

1 голос
/ 07 сентября 2011

Это нормально.Parser - это не статус, это обычная локальная переменная, но, так как вы все равно ее освобождаете, ну и что.Да, парсер должен быть освобожден

1 голос
/ 07 сентября 2011

1) выглядит отлично

2) это не так. ты не должен.

3) все нормально, как есть

1 голос
/ 07 сентября 2011

Это выглядит правильно и в целом корректно

Вам не нужно использовать статическое ключевое слово для парсера в этом случае.

Да, вам нужно освободить парсер, и вы 'мы сделали это в правильном месте.

...