Object-C ---2

第二篇~~~

今天还是一些基本的知识,算是复习一下原来的东西吧。

**1.栈**
栈是由系统维护的一个队列,所谓队列,就是先进后出啦~这里主要存放一些标准变量(比如bool,int,float等等),还有就是方法的地址。如图所示:

这里写图片描述

刚开始只有main方法,然后main
方法调用了方法2,方法2的指针就会被压入到栈里面,并且会分配一段内存,里面会存放方法2所需要的变量。然后方法2又调用了方法3,方法3的指针被压入栈空间,并且分配一段内存,可以存放方法3的变量。当方法3执行完毕,就会释放掉方法3的地址,还有方法3的那段内存空间,然后再继续执行方法2,等方法2执行完,释放方法2的空间,最后剩下main方法,main方法执行完,释放所有空间,程序执行完毕。

**2.堆**
堆是一大片自由的内存(可以这么说吧),也是我们平时写代码用的最多的内存,只要是引用类型就是从这里面来的,就是我们用[[alloc] init]的变量全是从这里来的,内存管理也是主要集中在这里。

3.属性 属性的出现,就是为了方便为变量生成存取方法,程序中对类的方法的访问最好是通过变量的存取方法,而属性可以帮我们可以很快的生成变量的存取方法。
示例代码:

@interface NBRhyonsisview : UIView

//使用property关键字可以很快的生成存取方法
@property(nonatomic,strong)UIColor *itemNumber;

@end

以上代码与下面的代码等价:

-(void)setItemNumber:(int)itemNumber
{
    _itemNumber = itemNumber;
}

-(int)itemNumber
{
    return _itemNumber;
}

即通过property会生成下划线加变量名的变量(例如_itemNumber)还有存取方法,其方便性不言而喻。
而property括号里面的参数也会对生成的存取方法有所控制。 (1)多线程参数 nonatomic和natomic
多线程属性,以后再说。。。。 (2)读写参数 readonly和readwrite 只读和读写,无需废话。。。只读为默认
(3)内存管理参数 strong,weak,copy和assign
strong是强引用,也是这个参数的默认类型,一般通过代码创建的引用变量都是强引用;weak是弱引用,这是苹果出的一种引用,可以有效的解决指针循环的问题(现在我觉得就这么点用。。。后面发现再补吧~);assign表示所声明的变量时基本类型,比如说int,bool,float等等;copy参数是通过复制的方式防止其他变量对属性的修改,请看:

@property(nonatomic,copy)NSString *itemName; 等价与

“`
-(void)setItemName:(NSString *)itemName {
_itemName = [itemName copy]; }

-(NSString *)itemName {
return _itemName; } “` 当执行self.itemName = newName这句代码时,itemName只是得到了newName的副本,后面当newName改变时并不影响itemName的值。

**4.属性合成@synthesize**
这个关键字用来为一个变量生成存取方法。
@synthesize age =_age;
这句话相当于为age属性创建存取方法,变量名为_age。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值