Mam superklasę Pytanie:
import <Foundation/Foundation.h>
#import "Answer.h"
@interface Question : NSObject {
NSString* qId;
NSString* qTitle;
NSString* qNumber;
NSString* sectionId;
NSString* type;
Answer* answer;
}
@property (nonatomic, retain) NSString* qId;
@property (nonatomic, retain) NSString* qTitle;
@property (nonatomic, retain) NSString* qNumber;
@property (nonatomic, retain) NSString* sectionId;
@property (nonatomic, retain) NSString* type;
@property (nonatomic, retain) Answer* answer;
@end
#import "Question.h"
@implementation Question
@synthesize qId, qTitle, qNumber, sectionId, type, answer;
-(id)init
{
if (self = [super init])
{
// Initialization code here
answer = [[Answer alloc]init];
}
return self;
}
-(void) dealloc{
[answer release];
[super dealloc];
}
@end
Mam kilka rodzajów pytań, jednym z przykładów jest pytanie suwakowe. Chcę, aby ta klasa była podklasą Pytanie:
#import <Foundation/Foundation.h>
#import "Question.h"
@interface SliderQuestion : Question {
(NSString*) min;
(NSString*) max;
}
@property (nonatomic, retain) NSString* min;
@property (nonatomic, retain) NSString* max;
@end
}
#import "SliderQuestion.h"
@implementation SliderQuestion
@synthesize min, max;
@end
Czy to jest właściwy sposób na podklasy? Czy SliderQuestion odziedziczy właściwości zawarte w pytaniu?
SliderQuestion* s = [[SliderQuestion alloc]init];
NSLog(@"%@", s.qId); //is this valid
2 odpowiedzi
Czy naprawdę chcesz, aby min
i max
były wystąpieniami NSString
? Wydaje się, że float
byłyby bardziej odpowiednie.
Ponadto usuń ()
w (NSString *)
, aby usunąć ostrzeżenie/komunikat o błędzie.
Wreszcie jest to odpowiedni sposób na podklasy. Wystąpienie SliderQuestion
odziedziczy wszystkie właściwości i metody klasy Question
(oraz NSObject
)
Zwróć uwagę na ( i ) wokół NSStrings, możesz je usunąć.
Podobne pytania
Nowe pytania
objective-c
Tego znacznika należy używać tylko w przypadku pytań dotyczących funkcji Objective-C lub zależnych od kodu w języku. Tagi [cocoa] i [cocoa-touch] powinny być używane, aby zapytać o ramy lub klasy Apple. Użyj powiązanych tagów [ios], [macos], [apple-watch] i [tvos] w przypadku problemów specyficznych dla tych platform.
dealloc
. Is.qId
powinien być ważny, ale będzienil
. Czy wystąpiły podczas tego jakieś błędy?