【Object-C】指针变量强制类型转换
来源:互联网 发布:js二维数组不定长 编辑:程序博客网 时间:2024/05/06 12:59
除了id类型外,指针变量只能调用它编译时类型的方法。而不能调用它运行时类型的方法,即使它实际所指向的对象包含该方法。如果需要让这个指针变量调用运行时类型的方法,就需要强制类型转换。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSObject* obj = @"Hello";
// 由于obj变量所指向的对象是NSString对象,所以运行时也可通过
NSString* objStr = (NSString*)obj;
NSLog(@"%@" , objStr);
// 定义一个obj2变量,编译类型为NSObject,实际类型为NSString
NSObject* obj2 = @"iOS";
// 尝试将obj2强转为NSDate,这行代码没有任何问题
// 但程序只是定义一个NSDate类型的指针,该指针与obj2指向同一个对象
NSDate* date = (NSDate*)obj2;
// 程序调用date的isEqualToDate:方法。
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSObject* obj = @"Hello";
// 由于obj变量所指向的对象是NSString对象,所以运行时也可通过
NSString* objStr = (NSString*)obj;
NSLog(@"%@" , objStr);
// 定义一个obj2变量,编译类型为NSObject,实际类型为NSString
NSObject* obj2 = @"iOS";
// 尝试将obj2强转为NSDate,这行代码没有任何问题
// 但程序只是定义一个NSDate类型的指针,该指针与obj2指向同一个对象
NSDate* date = (NSDate*)obj2;
// 程序调用date的isEqualToDate:方法。
// 由于date的编译时类型是NSDate,因此编译时没有任何问题
// 由于date实际指向的对象是NSString,因此程序执行时就会引发错误(可以自行测试下一行代码)
// NSLog(@"%d" , [date isEqualToDate:[NSDate date]]);
}
return 0;
}
return 0;
}
==>>
2014-11-29 15:22:17.215 强制类型转换[1113:303] Hello, World!
2014-11-29 15:22:17.217 强制类型转换[1113:303] Hello
出现以下错误:
-[__NSCFConstantString isEqualToDate:]: unrecognized selector sent to instance 0x100001090
2014-11-29 15:25:26.893 强制类型转换[1125:303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString isEqualToDate:]: unrecognized selector sent to instance 0x100001090'
0 0
- 【Object-C】指针变量强制类型转换
- 指针变量、指针强制类型转换
- C指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言: 指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- C语言指针强制类型转换
- java.lang.SecurityException: class "org.hamcrest.Matchers"'s signer information does not match signe
- 图像分类的字典学习方法概述
- SqlServer 并发事务(三):闩锁
- 日语学习之沪江N4基础 20141130 -4
- PreparedStatement的用法
- 【Object-C】指针变量强制类型转换
- 实现正则表达式的*和?匹配
- 阶段总结
- 我的成长记录
- 学Unity时 遇到的问题
- Oracle补充日志及日志记录规则
- JBPM API初识
- 【个人情感】娘子写
- ORALCE EBS ALERT 初体验