1

在 vc 中分配自定义类。然后我设置一个布尔值(设置或 . 表示法)。该值永远不会到达自定义类 - 总是报告 NO。

谷歌搜索并尝试了许多不同的变化 - 没有工作。下面的代码还有什么问题?

自定义视图.h

    @interface CustomView : UIScrollView <UIScrollViewDelegate> {
    BOOL myLocalProperty;
}

@property (assign) BOOL myProperty;

自定义视图.m

     @implementation CustomView

    @synthesize myProperty =_myProperty;

    - (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];

    myLocalProperty = _myProperty;

    if (myLocalProperty==YES) {
        NSLog(@"YES");
    } else if (myLocalProperty==NO) {
        NSLog(@"NO");
    }

    return self;
}

ViewController.m(在某些被定义为被调用的方法中)

CustomView *myView = [[CustomView alloc] initWithFrame:CGRectZero];

    myView.myProperty=YES;

YES 的值永远不会到达属性。这里有什么明显的错误吗?

4

2 回答 2

3

的值YES确实到达了那里,但是在您打印了 default之后NO就会发生这种情况。

的当前值_myProperty打印在初始化程序中;当您分配属性YES时,初始化程序就完成了!

您可以通过添加一个显示属性当前值的方法来检查该值是否到达那里:

- (id)showMyProperty {
    myLocalProperty = _myProperty;
    if (myLocalProperty==YES) {
        NSLog(@"YES");
    } else if (myLocalProperty==NO) {
        NSLog(@"NO");
    }
}

现在更改创建CustomView如下的代码:

CustomView *myView = [[CustomView alloc] initWithFrame:CGRectZero];
myView.myProperty=YES;
[myView showMyProperty]; // This should produce a "YES" in NSLog
于 2013-09-04T22:27:50.940 回答
1

您正在记录myPropertyin方法CustomView的值,但在返回之前initWithFrame:您不会分配YES给它。您应该在分配尝试登录, .myPropertyinitWithFrame:NSLog("myView.myProperty = %@", myView.myProperty ? @"YES" : @"NO"); myView.myProperty = YES;

于 2013-09-04T22:27:38.783 回答