2011-07-18 133 views
0

我有一個超類問題:iPhone超級類/子類實施例

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 

我有幾種類型的問題的,一個例子是一個滑塊的問題。我想要這個班的子類問題:

#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 

這是子類的正確方法嗎? SliderQuestion是否會繼承Question中包含的屬性?

SliderQuestion* s = [[SliderQuestion alloc]init]; 
NSLog(@"%@", s.qId); //is this valid 
+0

您可能還想釋放'dealloc'中的屬性。 's.qId'應該是有效的,但是'nil'。你做錯了嗎? –

回答

2

你真的想minmax是的NSString實例?看來float會更合適。

此外,請將()放入(NSString *)以刪除警告/錯誤消息。

最後,這是子類的適當方式。的SliderQuestion實例將繼承周圍的NSString的的Question類的所有屬性和方法(和NSObject以及)

0

通知(和),你可能想要刪除這些文件。