扫码关注官方订阅号
谁能告诉我为什么这个没错,通讯录中的“地址栏”打印出来貌似是字典,但是我用的是字符串接收,而且还能调用字典的方法
小伙看你根骨奇佳,潜力无限,来学PHP伐。
那个你“用字符串接收”只是把它的地址赋给了字符串类型的指针而已,这个指针指向的那块区域仍然是一个 dictionary。valueForKey是一个所有 NSObject 都有的方法,所以能通过编译,运行时调的就是内存指向的那个 Dictionary 的方法,所以当然没问题了。
valueForKey
你只是让它假装是个 NSString,实际上它一直都是 NSDictionary…… 你如果调 NSString 特有的方法,马上就 crash 了。
address 本身 是个字典address也是个实例 Objc中 类型判断并不严格 你用什么指针指向实例都可以甚至你能不能调用方法 编译时 也不会报错(应该会warning)这些都算动态特性
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
那个你“用字符串接收”只是把它的地址赋给了字符串类型的指针而已,这个指针指向的那块区域仍然是一个 dictionary。
valueForKey是一个所有 NSObject 都有的方法,所以能通过编译,运行时调的就是内存指向的那个 Dictionary 的方法,所以当然没问题了。你只是让它假装是个 NSString,实际上它一直都是 NSDictionary…… 你如果调 NSString 特有的方法,马上就 crash 了。
address 本身 是个字典
address也是个实例
Objc中 类型判断并不严格 你用什么指针指向实例都可以
甚至你能不能调用方法 编译时 也不会报错(应该会warning)
这些都算动态特性