/ / Właściwość / Błędy syntezy - cel-c, właściwości

Własności / Błędy syntezy - cel-c, właściwości

Przepraszam, że wciąż zadaję podstawowe pytania, ale jaNie wiem, gdzie jeszcze pójść Napisz jakiś kod suwakiem, polem tekstowym i przyciskami do zwiększania suwaka, aby zademonstrować kluczowe kodowanie wartości, wszystko działało, znajdź Następny krok polegał na użyciu "własności" i "syntezy" w miejsce metody dostępu i setera;

#import <Foundation/Foundation.h>
@interface KVCController : NSObject  {
int fido;
}
@property(readwrite, assign) int fido;
@end

~~~~~

@implementation KVCController
@synthesize fido;

- (id)init{
self = [super init];
if (self) {
// Initialization code here.
[self setValue:[NSNumber numberWithInt:5] forKey:@"fido"];
NSNumber *n = [self valueForKey:@"fido"];
NSLog(@"fido = %@", n);
}

return self;
}
~~~~~~~
@end

Dostaję niepełny błąd implementacji@implementacja KVCController. Jeśli umieściłbym metodę get i set dla "fido" w tym polu, to czyści. Drugi błąd występuje przy @synthesize fido ;. Mówi ona, że ​​właściwość musi być zadeklarowana w implementacji. Wszystko jest poprawnie skopiowane z książki i, jak mogę powiedzieć, wygląda tak, jak wszystkie inne zastosowania własności i syntezy, na które patrzyłem. Ktoś ma jakieś pomysły na temat tego, czego mi brakuje lub robię źle?

Xcode 4.1 automatycznie tworzy klasę delegatów, którą zazwyczaj ignoruję, jeśli nie pracuję nad delegatami. Stworzyłem własną klasę do ćwiczenia KVC i właśnie dodałem do niej deklaracje właściwości / syntezatora z odpowiednimi modyfikacjami i dostałem błędy. Właśnie wstawiłem deklaracje właściwość / syntezę do klasy delegatów, przeniosłem kod IBAction do odpowiednich miejsc, zmieniłem wiązania i usunąłem klasę, którą stworzyłem i wszystko działało dobrze. Czy deklaracje własności / syntezy muszą być traktowane jak materiał delegowany?

Odpowiedzi:

2 dla odpowiedzi № 1

niepełne wdrożenie oznacza, że ​​masz -(void)something które możesz zdefiniować w nagłówku, którego nie używasz w swoim @implementation. Upewnij się, że w nagłówku nie ma żadnych nieużywanych metod. jeśli to zrobisz, usuń je z nagłówka lub utwórz metodę w swojej implementacji.

- (void) dosomething
{
/* blank for now */
}

Jeśli masz -(void)dosomething w swojej implementacji zdefiniuj go w swoim nagłówku.

#import <Foundation/Foundation.h>
@interface KVCController : NSObject  {
int fido;
}
@property(readwrite, assign) int fido;
- (void) dosomething;
@end