【问题标题】:Getter and setter and property retain in objective-cgetter和setter以及属性保留在objective-c中
【发布时间】:2023-03-30 15:15:01
【问题描述】:

我有一个这样初始化的类。

// myclass.h
@property(nonatomic,retain) NSMutableArray *daysOfWeek; // this is in .h file

// myclass.m
@synthesize daysOfWeek;

-(id)init {
            if(self=[super init]) {
                    // initialize days of week
                    self.daysOfWeek = [NSMutableArray arrayWithCapacity:0];
            }
            return self;
    }

然而,在应用程序生命周期的后期,daysOfWeek 似乎被释放了。如果我在 init 方法中添加保留:

self.daysOfWeek = [[NSMutableArray arrayWithCapacity:0] retain];

然后一切都按预期工作,我可以从 daysOfWeek 添加和检索对象。 我认为 synthesize 会保留 daysOfWeek,我在这里缺少什么?

谢谢

【问题讨论】:

  • self.daysOfWeek = [NSMutableArray arrayWithCapacity:0];应该没问题...检查您的代码 - 可能是您在不使用属性的地方覆盖您的数组或释放它...

标签: objective-c memory memory-management


【解决方案1】:

问题出在其他地方。你原来的init 没问题。

【讨论】:

  • 是的,问题出在错误的 dealloc 方法实现中。这个问题不需要任何答案,也没有给网站增加任何真正的价值,很遗憾我不能标记为删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多