Pas*_*haN 10 iphone objective-c ios ios6 ios7
//Super class .h file
@interface MySuperClass : NSObject
@end
//Super class .m file
@interface MySuperClass ()
@property (nonatomic, strong) UITextField *emailField;
@end
@implementation MySuperClass
-(void)accessMyEmailField {
NSLog(@"My super email: %@", self.emailField.text);
}
@end
// ********** my subclass *******
//Subclass .h file
@interface MySubClass : MySuperClass
@end
//SubClass .m file
@interface MySubClass ()
@end
@implementation MySubClass
-(void)myEmail {
NSLog(@"My subclass email: %@", self.emailField.text);
}
-(void)setMyEmailFromSubclass{
self.emailField.Text = @"email@gmail.com"
}
@end
Run Code Online (Sandbox Code Playgroud)
-(void)myEmail method.-(void)setMyEmailFromSubclass; ,并在超类中访问它accessMyEmailField您可以在第二个头文件中放置这些属性的访问器,并在"需要知道"的基础上导入该文件.例如
mySuperClass + undocumentedProperties.h
#import "mySuperClass.h"
@interface mySuperClass(undocumentedProperties)
@property (nonatomic, strong) UITextField *emailField;
@end
Run Code Online (Sandbox Code Playgroud)
mySuperClass.m
#import "mySuperClass+undocumentedProperties.h"
@interface mySuperClass()
///stuff that truly will be private to this class only
// self.emailField is no longer declared here..
@end
@implementation mySuperClass
@synthesize emailField; //(not really needed anymore)
/// etc, all your code unaltered
@end
Run Code Online (Sandbox Code Playgroud)
mySubclass.h
#import "mySuperClass.h"
@interface mySubclass:mySuperClass
///some stuff
@end
Run Code Online (Sandbox Code Playgroud)
mySubclass.m
#import "mySubclass.h"
#import "mySuperClass+undocumentedProperties.h"
@implementation
//off you go, this class is now 'aware' of this secret inherited property..
@end
Run Code Online (Sandbox Code Playgroud)
很明显,MySuperClass.m必须导入这个.h文件以及它的默认文件(或者实际上不是,默认的是内置于此文件中),但你的子类也可以导入它(直接导入它们的.m文件,所以这些属性对于类来说是私有的.这不是一个合适的类别,因为没有相应的mySuperClass + undocumentedProperties.m文件(如果你尝试过,你无法为这些秘密属性合成支持iVars.享受:)
| 归档时间: |
|
| 查看次数: |
8864 次 |
| 最近记录: |