@interface TestObj :NSObject
@property(copy, nonatomic)NSString *name;
@end
@implementation TestObj
- (void)testName{
NSLog(@"name:%@",self.name);
}
@end
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
id tclass =[TestObj class];
void * vid = &tclass;
[(__bridge id)vid testName];
}
@end
日志:的iOS类方法
name: <ViewController: 0x7ff3584b6580>
我的理解是vid
是一个指向TestObj
类对象的地址,那么为什么vid
可以直接发送到testName
实例方法?
另外,为什么testName
方法调用NSLog
将输出<ViewController: 0x7ff3584b6580>
而不是零?
谢谢。
真的很奇怪,您可以在指向类的指针上调用实例方法。如果将'testName'更改为类方法而不是实例方法,请参阅会发生什么情况。 – rmaddy
- [TestObj testName]:发送给实例的无法识别的选择器 – WENHUI