【发布时间】:2013-10-12 11:49:23
【问题描述】:
给定一个具有如下属性的类:
@property(nonatomic,retain) NSString* un_conventional;
我尝试形成这样的选择器:
SEL setterMethod =
NSSelectorFromString(
[NSString stringWithFormat:@"set%@", [key capitalizedString]]
);
if ([customer respondsToSelector:setterMethod]) {
//do something
}
PS:理所当然地认为key是一个值为un_conventional的变量
问题似乎是这与正确的setter方法不匹配,因为capitalizedString导致setterMethod被命名为setUn_Conventional而不是setUn_conventional......字母“c”也是大写的!
那么,对于如何为这种情况动态准备选择器以生成名为 setUn_conventional 的选择器并可以通过 respondsToSelector 进行匹配,是否有人有任何建议?
【问题讨论】:
-
我至少能找到一个反对票的理由吗?
-
可能是因为这种元编程是一种反模式,并且表明存在严重的潜在架构问题(不是我,不过,我会尽快回答这个问题)。或者,可能是因为该人的意思是建议您可能应该研究 Key-Value Coding。
标签: ios objective-c nsstring respondstoselector