iOS 实例变量因未知原因被“NULLED”

Posted

技术标签:

【中文标题】iOS 实例变量因未知原因被“NULLED”【英文标题】:iOS instance variable gets "NULLED" for unknown reason 【发布时间】:2013-04-30 09:16:41 【问题描述】:

我有一个看起来像这样的实例变量:

@property (strong, nonatomic) Post *post;

我在一个自定义的 init 方法中设置它,如下所示:

- (id)initWithPageType:(int)pageType andPost:(Post *)post

    self = [super initWithNibName:@"StreamViewController" bundle:nil];
    if (self) 
        // Custom initialization
        self.post = post;
        self.pageType  = pageType;
    
    return self;

在这种情况下它永远不会是 NULL。我也有一个 NSFetchedResultsController 使用以下委托方法:

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
   atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
  newIndexPath:(NSIndexPath *)newIndexPath

    [...]
    // Here self.post == nil for some reason...
    [...]

有人知道为什么会这样吗?

【问题讨论】:

我认为 post 对象的所有权不知何故过期了,这使它为零。 【参考方案1】:

编写自己的 setter,然后在 setter 中的语句上放置断点。现在你就知道是什么代码设置了。

【讨论】:

以上是关于iOS 实例变量因未知原因被“NULLED”的主要内容,如果未能解决你的问题,请参考以下文章

UIGesture 在 IOS 中因未知原因失败

Flutter ios 构建失败 - Distill 因未知原因而失败

UITableView 和 UIRefreshControl 因未知原因被下移

一个函数如何实现return好几个返回值

Server EndPoint for WebSocket Java API中的易变变量?

错误:[$injector:unpr] 未知提供者:$routeProvider,无法实例化模块 myApp,原因是