在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值永远不会到达该属性。这里有什么明显的错误吗?
答案 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:
。