我正在阅读一些源代码,并注意到以下API,如果开发人员希望删除对象,则会在nil
中传递。
- (void)setSomeStatus:(SomeStatusObject *)status {
if (status != nil) {
[store setObject:status forKey:SOME_STATUS_KEY];
} else {
[store removeObjectForKey:SOME_STATUS_KEY];
}
}
我的具体问题是,如果上述内容可以缩减为
- (void)setSomeStatus:(SomeStatusObject *)status {
[store setObject:status forKey:SOME_STATUS_KEY];
}
或者
- (void)setSomeStatus:(SomeStatusObject *)status {
store[SOME_STATUS_KEY] = status;
}
答案 0 :(得分:1)
不,他们不等同。实际上,将nil
传递给setObject:forKey:
(值或键)将导致运行时异常。
答案 1 :(得分:0)
您无法使用nil
将值设置为setObject:forKey
。
NSDictionary想要一个对象,即使该对象代表NULL
,并且单独的值也不能设置为nil
。 (你可以将其设置为NSNULL
。
因此,要回答您的问题,您的代码无法替换现有代码。