来自不同班级的NSMutableArray的无效



我有这个类:

@interface PersonModel : NSObject
@property (nonatomic, weak) NSString *string;
@property (nonatomic, weak) NSMutableArray *array;
@end

在另一个类中,我使用该字符串和数组。字符串很好,但是阵列变为null。我照常启动它:

person.array = [[NSMutableArray alloc] init];
[person.array addObject:[object copy]];
NSLog(@"Array: %@", person.array);

如果其他内容对同一属性有很强的参考,则弱属性参考很有用。在您的情况下,情况并非如此。将您的Array放入strong属性中。

(为了易于阅读,不要以大写字母开头命名变量; arrayArray好。有意义的事情会更好。)

此代码看起来还可以。我能够通过使Nsmutablearray成为强大的财产而不是薄弱的财产来使它起作用。我仍在测试以弄清为什么代码中的更改会有所不同。

编辑:我还注意到,如果您首先将新的NSMutableArray实例设置为变量,则可以与弱属性类型一起使用:

PersonModel *personModel = [[PersonModel alloc] init];
NSMutableArray *tempMutableArray = [[NSMutableArray alloc] init];
[personModel setArray:tempMutableArray];
[personModel.array addObject:[someString copy]];
NSLog(@"Array: %@", personModel.array);

编辑2:这起作用是因为您的弱参考需要至少一个有力的参考(请参阅Phillip Mills的响应)。很高兴知道为什么将NSMutableArray的新实例设置为临时变量。

相关内容

  • 没有找到相关文章

最新更新