gpt4 book ai didi

objective-c - Cocoa ivar 在 init 和 drawRect 之间失去值(value)

转载 作者:行者123 更新时间:2023-12-03 17:36:32 25 4
gpt4 key购买 nike

我不是一个十足的n00b,但我觉得我一定错过了一些重要的东西。我通过类的 init 方法将变量传递到新的类实例中:

@synthesize side;

- (id)initWithSide:(NSString *)aSide frame:(NSRect)frameRect
{
if (self = [super initWithFrame:(NSRect)frameRect]) {
self.side = aSide;
}
NSLog(@"Side is %@", self.side);
return self;
}

NSLog() 的输出确实显示了正确的值。现在,随后触发绘制 View 的drawRect:方法具有类似的调用:

- (void)drawRect:(NSRect)rect
{
NSLog(@"Side is %@", self.side);

这次 NSLog() 报告 Side 为 nil!使用调试器单步执行它,我看到 side 的值被设置,然后它进入寄存器(所有那些我不理解的十六进制代码),然后当它再次跳出到 drawRect: 方法时,该值是根本为零。

如果有人能阐明这一点,我将不胜感激!

干杯,亚伦

最佳答案

这通常是为 NSString* 编写属性的方法。allocate 用于基本类型(它不会增加对象的保留计数),并且用于对象的保留或复制。

 @property (readwrite, copy) NSString * side

关于objective-c - Cocoa ivar 在 init 和 drawRect 之间失去值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com