Как добавить свойство в NSObject в Objective-C? - PullRequest
3 голосов
/ 12 февраля 2010

Я использую следующий код для добавления метода displayValue в NSObject:

@interface NSObject (MyNSObjectAdditions)
- (NSString*)displayValue;
@end


@implementation NSObject (MyNSObjectAdditions)
- (NSString*)displayValue {
    return self.description;
}
@end

Это прекрасно работает, но на самом деле я бы предпочел, чтобы displayValue было свойством только для чтения вместо метода.

Какой будет правильный синтаксис для преобразования displayValue в свойство вместо селектора, если это вообще возможно?

Ответы [ 3 ]

4 голосов
/ 12 февраля 2010

Вы можете добавлять новые методы в класс только с помощью категорий. Если вы действительно хотите добавить новые переменные экземпляра, вам придется создать подкласс NSObject.

В любом случае, добавление функциональных возможностей в NSObject редко является хорошей идеей. Можете ли вы объяснить, чего вы пытаетесь достичь?

3 голосов
/ 22 июня 2012

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

@interface NSObject (MyNSObjectAdditions)
@property (readonly) NSString *displayValue;
@end

@implementation NSObject (MyNSObjectAdditions)

- (NSString *)displayValue {
    return self.description;
}

@end
2 голосов
/ 12 февраля 2010

Похоже, ваш метод -displayValue ничего не добавляет к -описанию. Почему вы хотите это сделать?

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