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 を再起動します。

なぜそれが起こるのですか?:

Apple はこの質問に答える必要があります。

XCodeを一定期間使用した後、メモリの問題のガベージのようです。

そこにトラップが発生した場合の回避策

@HotLicksは、使用のアドバイスとNSLogそのpoオブジェクトの状態を確認することについて正しいです。

expressionまた、ブレークポイントの後にデバッガー ウィンドウでコマンドを使用して、メソッドを呼び出し、問題のオブジェクトのプロパティを読み取ることができます。

于 2015-08-18T16:28:37.327 に答える
0

zevarito は正しい軌道に乗っています。もう少し長くいらいらさせる問題を解決するようです:

プロジェクトを閉じます。

Xcode -> Window -> Projects 問題のプロジェクト (および他のすべてのプロジェクトはおそらく良いハウスクリーニングのアイデアです) について、Derived Data -> Delete をクリックします。

Xcode を閉じます。シミュレータを閉じます。

Xcode を再起動して、実行していたことを再開します。

于 2015-12-02T19:01:19.403 に答える