在视图控制器的自定义属性中设置Bool

时间:2013-09-04 22:24:23

标签: ios objective-c boolean getter-setter pass-data

在vc中分配自定义类。然后我设置一个bool值(set或。符号)。 值永远不会到达自定义类 - 始终报告NO。

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

CustomView.h

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

@property (assign) BOOL myProperty;

CustomView.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 (在某些被称为def。的方法中)

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

    myView.myProperty=YES;

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

2 个答案:

答案 0 :(得分:3)

YES的价值确实达到了,但在打印出默认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

答案 1 :(得分:1)

您在myProperty的{​​{1}}方法中记录了CustomView的值,但您未将initWithFrame:分配给{ {1}}直到YES返回。您应该在分配myProperty后尝试记录initWithFrame: