Вообще-то это что-то вроде:
MyClass.h:
extern NSString * const staticValue1;
extern NSString * const staticValue2;
@interface MyClass : NSObject
{
NSString *_strval;
int _intval;
float _fltval;
}
@property (retain, nonatomic, readwrite) NSString *strval;
@property (assign, nonatomic, readwrite) int intval;
@property (assign, nonatomic, readwrite) float fltval;
@end
MyClass.m :
NSString * const staticValue1 = @"Something";
NSString * const staticValue2 = @"Something else";
@interface MyClass
@synthesize strval = _strval;
@synthesize intval = _intval;
@synthesize fltval = _fltval;
- (id)init
{
self = [super init];
if (self != nil)
{
[self setStrval:[NSString stringWithFormat:@"This is a %@", @"string"]];
[self setIntval:10];
[self setFltval:123.45f];
}
return self;
}
- (void)dealloc
{
[self setStrval:nil];
[super dealloc];
}
@end
Это демонстрирует использование синтезированных свойств, которые используются здесь для управления памятью переменной экземпляра _strval
, которая требует сохранения/освобождения во избежание утечек памяти. Обратите внимание, что [self setStrval]
инициализируется автореализованным объектом (от [NSString stringWithFormat
) и будет сохранен методом сеттера. В качестве альтернативы эти методы могут быть вызваны, используя следующий синтаксис, если вы предпочитаете:
self.strval = [NSString stringWithFormat:@"This is a %@", @"string"];
self.intval = 10;
self.fltval = 123.45f;
Вы уверены, что хотите «свойства»? – newacct