【发布时间】:2011-11-13 12:35:03
【问题描述】:
我知道不久前我问过一个类似的问题,但我仍然有点不确定。同样的事情发生在好几个地方。
在 'self' 未设置为 '[(super or self) init...]' 的结果时使用的实例变量
一个
- (id)initWithCoder:(NSCoder *)decoder {
if (![super init]) return nil;
red = [decoder decodeFloatForKey:kRedKey]; //occurs here
green = [decoder decodeFloatForKey:kGreenKey];
blue = [decoder decodeFloatForKey:kBlueKey];
return self;
}
B
- (id)initWithFrame:(CGRect)frame title:(NSString*)str sideUp:(BOOL)up{
if(![super initWithFrame:frame]) return nil;
int y;
UIImage *img;
if(up){
img = [UIImage imageNamedTK:@"TapkuLibrary.bundle/Images/graph/popup"];
y = 5;
}else{
img = [UIImage imageNamedTK:@"TapkuLibrary.bundle/Images/graph/popdown"];
y = 14;
}
background = [[UIImageView alloc] initWithImage:img]; // occurs here
C
- (id) initWithFrame:(CGRect)frame {
if(![super initWithFrame:frame]) return nil;
UILabel *titleBackground = [[[UILabel alloc] initWithFrame:
CGRectMake(0, 0, 480, 40)] autorelease];
titleBackground.backgroundColor = [UIColor whiteColor];
[self addSubview:titleBackground];
titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; // occurs here
对于A区,这样对吗
self = [self init];
if( self != nil )
{
和B&C
- (id) initWithFrame:(CGRect)frame {
super = [super initWithFrame:frame]
if(super != nil)
{
【问题讨论】:
-
这是一个问题吗?如果是这样,是的问题是什么?
-
如果你写子类,使用super
标签: objective-c xcode cocoa-touch analyzer