我使用如下自定义初始化方法创建了一个简单的 UIViewController:
-(id)initWithGroupNumber:(NSString *)groupNumber {
if ((self = [super init]) == nil) {
return nil;
}
self.levelGroup = groupNumber;
return self; }
levelGroup是写在.h文件中的属性
@property (nonatomic, retain) NSString *levelGroup;
当我这样调用上面的方法时:
LevelsViewController *lvc = [[LevelsViewController alloc]initWithGroupNumber:@"5"];
Controller 已分配,但其中的所有属性都设置为零。我不明白为什么。
最佳答案
首先,当您处理具有可变类型子类的类时(例如 NSMutableString
),请使用copy
。
所以,你的属性(property)应该变成:
@property (nonatomic, copy) NSString *levelGroup;
然后,在 UIViewController
中合成属性
@synthesize levelGroup;
并在 init
中执行以下操作:
-(id)initWithGroupNumber:(NSString *)groupNumber {
if (self = [super init]) {
levelGroup = [groupNumber copy];
}
return self;
}
如 memory management guide 中所写你不应该在 init
和 dealloc
中使用 self.
。
使用您的属性 self.levelGroup
获取或设置值。
记得在dealloc中释放:
[levelGroup release];
希望对您有所帮助。
关于objective-c - 在分配的 UIViewController 上设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521943/