使用指针进行Objective-C Casting [复制]
参见英文答案 >
Objective-C and Pointers????????????????????????????????????3个
>???????????? why most of the objects we create in iphone are pointers????????????????????????????????????1个 我是Objective-C的新手,来自Java背景.我刚刚在Objective-C中进行了转换,但我正在使用的书未能解释在转换时使用’*’/指针.以下是他们给我的例子: myFraction = (Fraction *) fraction; 是不是特定对象的指针,所以他们有自己独特的内存位置?那么为什么我只能在引用类时使用指针?在这种情况下,分数. 谢谢,我希望这是有道理的,我知道这是一个我应该知道和理解的简单问题,但我找不到任何解释. 解决方法
*符号有多种含义(旁边乘法:):
>解除引用(跟随)指针.此代码跟随存储在pointerToInt中的指针,然后为其赋值. (*pointerToInt) = 5; >声明指针类型.当你写int *它意味着“引用一个整数”. int x = 5; int * xPtr = &x 现在,对象是一种结构,但我们只能通过指针操作它们.永远不要直接这基本上意味着,99%的时间当你看到*(并且它不是乘法:)它是第二种情况:类型声明的一部分: > NSString * =指向NSString结构的指针(不能单独使用NSString) 所以它不是“指向Fraction类的指针”,而是“指向Fraction类结构的指针”. 我会更进一步,回答你关于两个**的未来问题.您可能会看到通常使用NSError参数,这些参数定义为methodWithError:(NSError **)errorPtr. 短篇小说:int是int *,因为NSError *是NSError **. 长话:如果我们不能直接操作对象(没有指向它们),单个指针就成为声明的标准部分.现在如果我们想要间接访问该对象呢?我们用双指针!对象需要First *,第二个是间接. NSError *error = nil; // Empty. NSError **errorPtr = &error; // Reference to our local `error` variable. [data writeToURL:URL options:kNilOptions error:errorPtr]; // That method uses: (*errorPtr) = [NSError errorWith...]; NSLog(@"Error: %@",error); // Our local error is no longer empty. 我相信当你来自Java时,指针很奇怪.它们是C的一些遗产,但它们并没有以任何疯狂的方式使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |