【发布时间】:2017-02-08 12:57:16
【问题描述】:
@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
日志:
name: <ViewController: 0x7ff3584b6580>
我的理解是vid是一个指向TestObj类对象地址的指针,那为什么vid可以直接发给testName实例方法呢?
另外,为什么testName方法调用NSLog会输出<ViewController: 0x7ff3584b6580>而不是nil?
谢谢。
【问题讨论】:
-
可以在指向类的指针上调用实例方法真的很奇怪。看看如果将
testName更改为类方法而不是实例方法会发生什么。 -
-[TestObj testName]:无法识别的选择器发送到实例
标签: ios objective-c runtime