我有一个问题,这是代码:
@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/