NSStringFromCGPoint是否返回自动释放的对象?

时间:2012-03-10 22:00:45

标签: iphone memory

问题#1 NSStringFromCGPoint()会返回一个自动释放对象,还是需要释放该对象?

问题#2 当您拥有房产时:@property (nonatomic, retain) NSString *someString; 你设置它是这样的:self.someString = [[[NSString alloc] initWithString:@“Something”] autorelease];

这是:

[someString release];
someString = nil;

等于

self.someString = nil;

2 个答案:

答案 0 :(得分:1)

  1. 我没有特别检查过那个,但按照惯例,那些类型的函数会返回自动释放的对象。您可以通过设置最小的非ARC项目并在函数中调用-retainCount来自行测试,但我不确定。 (一般来说,retainCount不是您想要使用的东西。)

  2. 是。合成的setter看起来像:

    - (void)setSomeString:(NSString *)string
    {
        if (string != someString) {
            [someString release];
        }
        someString = [string retain];
    }
    
  3. 因此,无论是显式调用还是使用点表示法,都会释放旧值(并将基础ivar设置为nil或传入的任何内容。)

    另外,我不确定你是不是只是为了一个随机的例子而做,但是你不必将字符串文字包装在内存管理代码中以将其传递给属性访问器。 (也就是说,self.someString = @"Something"没问题。)

答案 1 :(得分:1)

呼叫是否包含术语“新”,“分配”,“复制”或“创建”?如果没有,您将获得一个您不拥有的对象(您可以假设它是自动释放的或者该引用在其他地方拥有)。