zoukankan      html  css  js  c++  java
  • 【Object-C】指针变量强制类型转换

    除了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;
           
     // 程序调用dateisEqualToDate:方法。
            // 由于date的编译时类型是NSDate,因此编译时没有任何问题
            // 由于date实际指向的对象是NSString,因此程序执行时就会引发错误(可以自行测试下一行代码)
           // NSLog(@"%d" , [date isEqualToDate:[NSDate date]]);
           
        }
       
     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'


  • 相关阅读:
    java web项目打包.war格式
    version 1.4.2-04 of the jvm is not suitable for thi
    Sugarcrm Email Integration
    sharepoint 2010 masterpage中必须的Content PlaceHolder
    微信开放平台
    Plan for caching and performance in SharePoint Server 2013
    使用自定义任务审批字段创建 SharePoint 顺序工作流
    Technical diagrams for SharePoint 2013
    To get TaskID's Integer ID value from the GUID in SharePoint workflow
    how to get sharepoint lookup value
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481469.html
Copyright © 2011-2022 走看看