我不确定如何使用这种方法,我已经尝试过以下代码,并假设两者都应该返回YES,但我观察的是不同的东西。有人可以解释一下吗? [UILocalNotification setRegion:]是iOS8中的新功能。
BOOL test0 = [[[UILocalNotification alloc] init] respondsToSelector:@selector(setRegion:)];
BOOL test1 = [UILocalNotification instancesRespondToSelector:@selector(setRegion:)];
调试窗口显示测试值为:
test0 = (BOOL)YES;
test1 = (BOOL)NO;
答案 0 :(得分:3)
虽然理解一个是类方法,另一个是实例方法,但我无法理解两者如何(或为什么)会返回不同的答案。如果我这样做会增加混乱
BOOL test2 = [[[[UILocalNotification alloc] init] class] instancesRespondToSelector:@selector(setRegion:)];
然后答案是肯定的!所以我检查过,如果你看一下alloc init返回的对象的类,那就不一样了:
UILocalNotification *local = [[UILocalNotification alloc] init];
NSLog(@"%@", NSStringFromClass([local class]));
NSLog(@"%@", NSStringFromClass([UILocalNotification class]));
返回:
2014-11-14 12:48:14.990 Test[6750:22555] UIConcreteLocalNotification
2014-11-14 12:48:14.991 Test[6750:22555] UILocalNotification
哪个解释了答案的不同之处。