加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用指针进行Objective-C Casting [复制]

发布时间:2020-12-16 09:50:44 所属栏目:百科 来源:网络整理
导读:参见英文答案 Objective-C and Pointers????????????????????????????????????3个 ???????????? why most of the objects we create in iphone are pointers????????????????????????????????????1个 我是Objective-C的新手,来自Java背景.我刚刚在Objective-
参见英文答案 > 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的一些遗产,但它们并没有以任何疯狂的方式使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读