我很难表达我的问题所以我会写一个简单的例子。我有2个班,MyclassA和MyclassB。
@interface MyclassA
@property (nonatomic, assign) int *ID;
@property (nonatomic, strong) MyclassB *secondclass;
@end
@implementation MyclassA
-(id)init
{
self.ID = 1;
MyclassB *sec = [[MyclassB alloc] init];
sec.age = 10;
sec.weight = 35;
self.secondclass = sec;
return self;
}
MyclassB:
@interface MyclassB
@property (nonatomic, assign) int age;
@property (nonatomic, assign) int weight;
@end
当我在
处放置一个断点时return self;
self.secondclass的值为null。
我做错了什么?
答案 0 :(得分:1)
您正在创建MyClassB
的新对象。您应该在secondClass
方法中初始化属性init
,而不是分配另一个MyClassB
实例的引用。
-(id)init
{
self.ID = 1;
self.secondclass = [[MyclassB alloc] init];
self.secondclass.age = 10;
self.secondclass.weight = 35;
return self;
}
答案 1 :(得分:0)
替换此行
MyclassB *sec = [[MyclassB alloc] init];
使用
self.secondclass = [[MyclassB alloc] init];
答案 2 :(得分:0)
self.secondclass = [[MyclassB alloc] init];
正确分配