代码之家  ›  专栏  ›  技术社区  ›  fuzzygoat

伊瓦尔,有没有自我?

  •  0
  • fuzzygoat  · 技术社区  · 14 年前

    [[self dataForTable] count] 直接引用该对象中包含的iVar。但是如果你错过了self off直接指定iVar [dataTable count] 这有什么区别,你用self保护什么,仅仅是为了唯一地指定一个iVar而不是类似的局部变量吗?

    @implementation ViewController
    @synthesize dataForTable;
    
    ...
    
    NSUInteger dataCount = [[self dataForTable] count];
    

    非常感谢

    2 回复  |  直到 14 年前
        1
  •  1
  •   Darryl H. Thomas    14 年前

    写入[[self dataForTable]计数] 没有 直接参考iVar。有一些幕后的事情。。。

    至于影响,这将根据您的代码而有所不同。例如,如果您的财产是保留财产(与已转让的财产相反),则以下两种财产之间存在非常显著的差异:

    someVar = nil
    

    self.someVar = nil
    

    合成的setter将在将someVar设置为nil之前正确地释放它,而在第一个示例中,您现在已经泄漏了内存。这只是区别的一个例子。

        2
  •  0
  •   David Gelhar    14 年前

    [self foo] -foo self

    self.bar 使用@property语法访问 bar iVar,通过调用getter/setter方法( -bar -setBar: )靠自己。

    bar = @"some text" )绕过getter/setter。这可能是一件坏事,如果设置者是(例如)应该做的事情 copy retain