其实我会说:是的,Getter是主人.因此,任何调用Getter的人都不负责释放内存.或者更确切地说,对象本身是所有者,但Getter充当实例变量的传递机制给其他人.这是对的,还是我弄错了?
谈论对象而不是方法,拥有对象更有意义.
通常,调用getter的对象是要返回的对象的所有者,因为返回值是一个实例变量:
(Foo*)foo {return _foo; //我的实例变量}
但是,getter创建一个已自动释放的临时对象并返回它也很常见:
(NSString*)sizeStr {return [NSString stringWithFormat:@"%d",self.size]; }
在这种情况下,该对象(NSString)实际上没有所有者,除了当前的自动释放池,它将在退出时释放它.
在(非GC)Cocoa编程中要记住的重要规则与所有权本身没有关系,但是当你有一个对象的引用时(你必须在某个时候发布)和你不在"T.