6

我有一个自定义对象ProductCategory

.h 文件:

#import <Foundation/Foundation.h>

@interface ProductCategory : NSObject

@property int productCategoryId;
@property NSString *name;
@property NSArray *children;
@property int parentCategoryId;


- (id)initWithId:(int)productCategoryId name:(NSString*)name;

- (id)initWithId:(int)productCategoryId name:(NSString*)name children:(NSArray*)chidren parentCategoryId:(int)parentCategoryId;

@end

.m 文件:

#import "ProductCategory.h"

@implementation ProductCategory

- (id)init {
    if((self = [super init])) {
        self.parentCategoryId = 0;
    }

    return self;
}

- (id)initWithId:(int)productCategoryId name:(NSString*)name {
    if((self = [super init])) {
        self.productCategoryId = productCategoryId;
        self.name = name;
        self.parentCategoryId = 0;
    }

    return self;
}


- (id)initWithId:(int)productCategoryId name:(NSString*)name children:(NSArray*)chidren parentCategoryId:(int)parentCategoryId {
    if((self = [super init])) {
        self.productCategoryId = productCategoryId;
        self.name = name;
        self.children = chidren;
        self.parentCategoryId = parentCategoryId;
    }

    return self;
}

@end

这只是一个普通的对象,我已经这样做了 100000 次。问题是,有时该对象的实例返回"0 objects",有时返回正确的对象。

例如,如果我这样做,ProductCategory *category = [[ProductCategory alloc]init];有时它会返回一个ProductCategory实例,有时它会返回"0 objects",因此我无法为该对象分配任何值。

在此处输入图像描述

我想这应该是非常愚蠢的事情,但我没有看到。

4

2 回答 2

4

解决方法:

重新启动 XCode。

为什么会发生?:

苹果应该回答这个问题。

使用 XCode 一段时间后,这似乎是内存中的垃圾问题。

遇到陷阱时的解决方法

@HotLicks 关于使用建议NSLogpo确保该对象的状态是正确的。

您还可以expression在断点后在调试器窗口中使用命令调用方法并读取相关对象的属性。

于 2015-08-18T16:28:37.327 回答
0

zevarito 是在正确的轨道上。多一点似乎解决了长期恼人的问题:

关闭项目。

Xcode -> Window -> Projects 对于有问题的项目(以及所有其他项目可能是一个不错的清理思路),单击 Derived Data -> Delete。

关闭 Xcode。关闭模拟器。

重新启动 Xcode 并恢复你正在做的事情。

于 2015-12-02T19:01:19.403 回答