当前位置:  开发笔记 > IOS > 正文

Objective-C实例变量指针

如何解决《Objective-C实例变量指针》经验,为你挑选了2个好方法。

我是目标C的新手,我只是希望得到关于何时使用指针的一般说明以及何时不使用,在声明实例变量时.

我能想到的例子是UIView vs. BOOL.UIView我会做一个指针,BOOL我不会(因为编译器对我大吼大叫).

任何一般指导都很棒.

干杯,



1> Andrew Pouli..:

如果它是一个对象,则使用指针表示法.所有c类型(int,BOOL,long等)都不是对象,因此如果需要指向其内存位置的指针,则只使用指针:

NSObject *obj;
UIView *obj;
int integerVar;
BOOL isTrue;

一个特例是id,它本身就是一个指向对象的指针,所以你不需要*:

id obj;

有点棘手:

NSInteger int;
NSNumber *number;

NSInteger是适当的特定于平台的int类型,而NSNumber是一个可以包含int,float或者有什么的对象.


感谢您的回答.这让我现在问,C类型如何从内存中清除?它是在Objective-C引擎盖下完成的吗?
不要忘记,有时在头文件中,Apple已经为结构设置了typedef,你总是用指针引用它们.在这种情况下,名称以"Ref"结尾.例如CGImageRef,它是CGImage*的typedef.当你看到你没有把自己的*放在变量名上.

2> stefanB..:

指针用于保存已分配内存的地址.在cocoa中创建对象时,您可以分配内存并将地址存储在指针中.

BOOL,char,int存储该值.

创建类时,alloc会分配内存,因此您需要存储指向该内存的指针才能访问它:

NSMutableArray * arr = [[NSMutableArray alloc] init];

如何从内存中清除C类型?

'简单'类型在堆栈上分配.调用方法时,在堆栈上分配空间以容纳所有方法变量(加上一些其他的东西,如参数和返回地址等).堆栈增长.一旦方法返回,堆栈就会收缩,并且方法使用的空间现在被回收 - 所以是的,简单类型将被"清理".

它实际上比听起来简单得多.查看维基百科堆栈条目 - 硬件堆栈以获取更多详细信息以满足您的好奇心.

当你'分配内存'时,内存在堆上分配.堆可用于整个应用程序的执行.在堆上分配内存后,您将获得该内存的地址 - 您将此地址存储在指针中.指针只是一个存储内存地址的变量.

当你的方法返回时,你不再能够访问在方法中声明的'简单'变量(例如BOOL,int,char等),但堆上的内存仍然存在.如果您仍然拥有内存的地址(例如指针),则可以访问它.

那么'simple'类型的实例变量怎么样(编辑:内部对象?)?

当你创建对象(我们在这里谈论目标C和Cocoa)并分配它时,你为整个对象分配空间.对象的大小是它所有变量的大小(不确定obj-c是否添加其他东西).因此,实例变量是堆上对象内存的一部分.当你释放/删除对象时,它的内存被回收,你不再能够访问存储在对象中的变量(在o​​bj-c中你调用release,每个对象保持引用计数,当引用计数达到0时,对象被释放 - 堆上的内存被回收).

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有