我知道,当我拥有一个被设置为保留或复制的对象的属性时,我必须执行以下操作。
Object *o = [[Object alloc] init];
self.myObject = o;
[o release];但是,如果我不为myObject定义属性呢?
我可以在不泄密的情况下做以下事情吗?
为每个类中的每个变量定义一个属性更好吗?,为什么是?
myObject = [[Object alloc] init];发布于 2010-09-16 01:02:53
您可以做的是确保在将保存它的变量赋值给新实例之前释放先前分配的对象(无论它是另一个对象的保留版本,还是它的副本)。
如果不为其定义属性,则不要使用点语法。
发布于 2010-09-16 02:30:05
是的,您可以通过这种方式设置实例变量,这是完全可以的--事实上,这是init方法中的首选方法(因为setter可能有副作用)。只需记住在设置新对象之前释放变量中的旧对象(如果有的话),否则会泄漏。无论您使用属性还是直接设置ivar,都需要在dealloc中释放该对象。
发布于 2010-09-16 01:20:20
因为雅各布已经回答了无财产的部分。我会回答左边的
我可以在没有泄漏的情况下做以下工作?
myObject = [[Object alloc] init];
您必须在某个地方发布myObject,可能是在委托方法中,或者在您使用完它之后,但是请记住释放对象,特别是在失去对象引用之前。
是否更好地为每个类中的每个变量定义一个属性?为什么??
这取决于您的编码约定,定义所有属性将在很大程度上帮助您进行内存管理,但它会带来负担,有时您的团队不希望为每个变量定义实例变量、属性和合成,这意味着有相当多的代码。因此,与你的团队讨论,看看你的弱点和优势。如果您在内存管理方面比较薄弱,我建议您为每个
https://stackoverflow.com/questions/3722998
复制相似问题