关于方法里创建类对象

这是上个周的问题了,也没彻底解决,不过每次遇到都是自己说服自己去理解。还有就是设计模式上的问题吧。杨总让我把作业搞的复杂一点,于是我就把长方形,正方形什么得图形做了个类工厂,感觉编程也可以像工业生产一样去做,确实能节省很多的精力。回过头来想想,发明计算机是为了什么,有了编程语言是为了什么,不就是为了解放人么?和学长交流了一下,设计模式有很多,应对不同的问题,会有不同的设计模式。以后抽空看看设计模式,应该属于理解的东西,和编程规范差不多吧,就是理解了,不知不觉中用出来的东西。

,上周遇到的问题。

-(cat *)add:(cat *)c1
{
    cat * c2=[[cat alloc]init];
    c2.a=c1.a;c2.b=c1.b;
    return c2;
}

在这里我只写个例子吧,这是个实例方法,传入一个对象,说到底这个对象是个指针,有时候为了操作不会对原来对象产生变化,就会在方法中创建一个对象,我的理解是创建一个临时对象,不知道我这种理解对不对。

这个对象创建成功,做完操作,返回。问题来了,要是在方法外,我们再次用到这个C2,这个时候C2所指的位置会不会被释放?如果没释放,何时释放才合理?假如释放了,再次引用就是不安全的了。

这就是我刚遇到的问题,可能过几天回过头来看看这就不是问题了。

现在我也有自己的理解,用来说服我自己。就是说这个对象开辟了内存,在没有release的时候是不会释放的,当程序结束,会由自动释放池自动释放。那这部分内存是一直被占用的,就不会产生不安全的状况。这样的解释很勉强,因为这样创建的对象多了的话,会让系统崩溃。我还不清楚这个自动释放池到底有多智能,会自动检测并释放用完的,还没释放的对象,并释放。

希望路过的大神指点在下。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值