【发布时间】:2019-02-27 00:06:23
【问题描述】:
我有一个多视图应用程序并使用一个对象来跟踪我的登录用户。我的 User.h 看起来像这样
@interface User : NSObject
@property (strong, nonatomic) NSDictionary *data;
@property (weak, nonatomic) NSString *uid;
@property (weak, nonatomic) NSString *firstName;
@property (weak, nonatomic) NSString *lastName;
@property (weak, nonatomic) NSString *dob;
@property (weak, nonatomic) NSString *gender;
@property (weak, nonatomic) NSString *avatarURL;
@property (assign, nonatomic) NSInteger status;
- (void)setPropertiesWith:(NSDictionary *)data;
User.m 看起来像这样
#import "User.h"
@implementation User
/*
* set properties
*/
- (void)setPropertiesWith:(NSDictionary *)data{
self.data = data;
self.uid = self.data[@"uid"];
self.firstName = self.data[@"firstName"];
self.lastName = self.data[@"lastName"];
self.dob = self.data[@"dob"];
self.gender = self.data[@"gender"];
self.status = [[self.data valueForKeyPath:@"status"] intValue];
self.avatarURL = self.data[@"avatarURL"];
}
@end
我的数据很弱,但在其中一个视图中它会变为空 - 我相信 ARC 正在发布它。如果我错了,请纠正我。
我有两个问题:
使用此设置,数据为
strong,其余属性为weak,是否存在潜在风险?我应该将数据设为 ivar 并保持其余部分不变吗?
属性的存在没有任何实际原因(除了我糟糕的课程设计技巧)。我只是觉得这很有趣,并想了解发生了什么。
【问题讨论】:
-
为什么要弱化属性?
-
@rmaddy 新手错误。
标签: ios objective-c automatic-ref-counting