ios - objective-c 中的箭头运算符

标签 ios objective-c runtime

我有一个问题,这是代码:

@interface MyFoo : NSObject {
    NSString *nameStr;
}
@end
@implementation MyFoo
- (id)init {
    self = [super init];
    if (self) {
        self->nameStr = [@"some value of the string that is set right into the private ivar" copy];
    }
    return self;
}
@end

问题是:忽略所有 C++ 规则,忽略内存转储漏洞,为什么我不应该使用这样的箭头运算符语法? Apple 文档中的某个地方是否有一条规则表明它是不正确的,因为在未来的类中,类的表示可能不同于运行时等中指向结构的指针?

提前致谢!

最佳答案

self->someIvar 的使用与someIvar 相同。这没有错,但也没有必要。

我唯一一次使用箭头表示法是在 copyWithZone: 的实现中,所以我可以复制每个没有属性的 ivars。

SomeClass *someCopy = ...
someCopy->ivar1 = ivar1; // = self->ivar1
someCopy->ivar2 = ivar2; // = self->ivar2

你在哪里看到任何说你不应该使用这种箭头运算符语法的东西?

关于ios - objective-c 中的箭头运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919793/

相关文章:

javascript - 内存斐波那契的时间复杂度?

ios - 是否可以在 prepareForSegue 中使用 if/else?

ios - 将大纹理渲染到较小的渲染缓冲区

ios - 返回可选值的类属性(字符串)(Swift)

objective-c - 如何更改单个 View 的亮度

ios - ObjC 未正确转发 scrollViewDidScroll 消息

iphone - itemFailedToPlayToEnd - MPMoviePlayerController - iOS7

ios - 在 iOS 中从 Sqlite 检索字典

objective-c - 带 iOS 的 Airstash

java - 为什么我无法在 Eclipse 中使用正确的项目方面在 JBoss AS 5.1 上运行动态 Web 项目