Próbuję dodać właściwość bez tworzenia zmiennej instancji. Czy można to zrobić? Czy możesz zrobić coś podobnego w sposób, który nie jest własnością?Dodać właściwość bez zmiennej instancji?
Przykład:
@interface RandomClass()
@property (nonatomic) int value;
@end
@implementation RandomClass
@synthesize value = _value;
// Here I override the default methods @synthesize
-(int)value
{
return 8; // Actually I'm returning something more complex, so a "define" won't work
}
-(void)setValue:(int)value
{
self.someOtherValue = value;
}
W powyższym kodzie, nie używam instancji zmiennej _value
! Czy istnieje sposób, aby to zrobić bez tworzenia zmiennej?
Jeśli zamierzasz zadeklarować właściwość, niezależnie od tego, czy jest ona wspierana przez deklarowany ivar, czy nie, powinieneś otrzymać deklarację '@ synthesize' lub' @ dynamic'. OP ma prawdopodobnie deklarację '@ dynamic'. I w tym przypadku, i biorąc pod uwagę to, co jego komentarze mówią w kodzie, prawdopodobnie nie potrzebuje też zadeklarowanego ivar. – kamprath
Tego właśnie szukałem! Wielkie dzięki! – tomidelucca
@claireware: Wręcz przeciwnie, jeśli kompilator widzi, że metody są zaimplementowane, nie ma potrzeby stosowania '@ dynamic'. Zobacz ["Dyrektywy implementacji właściwości"] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW9):
–