2016-04-12 14 views
1

ich nur gelesen habe EigentumEinstellung Nur-Lese-Eigenschaft einen Wert

@property (nonatomic, readonly) NSInteger keepalive; 

Mit einer Getter-Methode

-(NSInteger)keepalive 
{ 
    return _keepalive/1000; 
} 

ERROR - Verwendung von nicht deklarierter Bezeichner

und zu versuchen, eine setzen Wert in init Methode

- (instancetype)init 
{ 
    self = [super init]; 

    if (self) 
    { 
     _keepalive = 25000; 
    } 
    return self; 
} 

ERROR - Verwendung von nicht deklarierter Bezeichner

den Grund nicht verstehen konnte, warum und was ist der richtige Weg, ein Nur-Lese-Eigenschaft zu haben, mit einem Getter.

EDIT: würde ich nicht synthesize hinzufügen möchten, wie im Kommentar vorgeschlagen, da es nicht mehr gebraucht wird - as stated here und bekam ich die richtige Antwort unten. Danke André Slotta!

+0

@ originaluser2 - Ich bin nicht einverstanden mit Ihrem 'dupliziert' -Kennzeichnung. Bitte lies meine Bearbeitung. Danke – Gal

+0

@Josh Caswell- Ich stimme nicht mit Ihrer 'doppelte' Markierung. Bitte lies meine Bearbeitung. Vielen Dank – Gal

Antwort

1

in Ihrem Fall, dass Sie die Eigenschaft als Lese-Schreib in Ihrer Implementierungsdatei neu deklarieren könnte:

.h:

@property (nonatomic, readonly) NSInteger keepalive; 

.m:

@property (nonatomic, readwrite) NSInteger keepalive; 

Auf diese Weise können Sie verwenden Compiler generierte Atomsetter und Getter innerhalb Ihrer Implementierung, aber setzen Sie die Setter nicht dem Rest der Welt aus.

(siehe https://www.bignerdranch.com/blog/property-values/)

Verwandte Themen