如何设置父类的属性的初始值?

时间:2022-05-28 15:30:09
如下两个类
----------------------------------------------
@interface A : NSObject {
NSString *x;
}
@property (retain,nonatomic) NSString *x;

@end
---------
#import "A.h"
@implementation A
@synthesize x;
@end
-----------------------------------------------
#import <Foundation/Foundation.h>
#import "A.h"

@interface B : A {

}
@end
------------
#import "B.h"


@implementation B

@end
-------------------------------------------------
如上面代码, 现有B C D E.....等类均继承于A类,
怎么办能给A的X属性初始化一个值@"测试"

使得
B *b = [[B alloc] init];
NSLog(b.x);

C *c = [[C alloc] init];
NSLog(b.x);
..........
均能输出@"测试".

例如在C#中可以直接写
@interface A : NSObject {
NSString *x = @"测试";
}
@property (retain,nonatomic) NSString *x;

@end

这里怎么办?

9 个解决方案

#1


也是这么写吧? 如何设置父类的属性的初始值?不确定哦  看楼下吧

#2


a 的init中
 NSString *x = [[NSStringalloc] initWithString:@"测试"];
 

#3


楼上这位,你这我试过,不对

#4


补充一下,常见的几种方法我都试过了,
而且上面的代码挺简单的,可以拷过去试试,
请确认没问题再回答.

#5


你在父类 init方法里面设置一个断点,看看子类init的时候有没有跳转到 父类的init方法里面

一般父类init了,输出是没有问题的

#6


楼上的,我最初也是想的这种方法,父类init了,但好像父类的就是父类的,调用子类的还是木有.

#7


不信你可以试试,我还没明白为啥会这样

#8


谢谢各位  马上结贴  
我自己的问题  确实是在init那里写

#9


可以在A类中重载init方法,初始化string值

#1


也是这么写吧? 如何设置父类的属性的初始值?不确定哦  看楼下吧

#2


a 的init中
 NSString *x = [[NSStringalloc] initWithString:@"测试"];
 

#3


楼上这位,你这我试过,不对

#4


补充一下,常见的几种方法我都试过了,
而且上面的代码挺简单的,可以拷过去试试,
请确认没问题再回答.

#5


你在父类 init方法里面设置一个断点,看看子类init的时候有没有跳转到 父类的init方法里面

一般父类init了,输出是没有问题的

#6


楼上的,我最初也是想的这种方法,父类init了,但好像父类的就是父类的,调用子类的还是木有.

#7


不信你可以试试,我还没明白为啥会这样

#8


谢谢各位  马上结贴  
我自己的问题  确实是在init那里写

#9


可以在A类中重载init方法,初始化string值