arrayWithCurrentLadder
配列が少なくとも1回割り当てられて開始されるように、プロパティの遅延インスタンス化を実行しようとしています。ただし、配列内のオブジェクトを処理しようとしても何も起こらないため、セッターが実際に呼び出されることはないようです。そこで、配列内のNSLog
オブジェクトを試して、実際の値を取得しているかどうかを確認することにしました。 (私はあなたが見ることができるようにそのコード行で星を付けました)そしてデバッガーは言っ(null)
たので、私のセッターは実際には設定されていないと思います。セッターにランダムなNSLog
sを追加して再度表示しましたが、メッセージがデバッガーに表示されませんでした。セッターがセットされないのはなぜですか?
#import "LViewController.h"
@interface LViewController ()
@property (nonatomic) BOOL firstLadder;
@property (nonatomic, weak) NSMutableArray *arrayWithCurrentLadder;
@property (weak, nonatomic) IBOutlet UIView *playingView;//connects playingView to LViewController
@end
@implementation LViewController
@synthesize playingView = _playingView;
@synthesize firstLadder = _firstLadder;
@synthesize arrayWithCurrentLadder = _arrayWithCurrentLadder;
-(void)setArrayWithCurrentLadder:(NSMutableArray *)arrayWithCurrentLadder {
if(!_arrayWithCurrentLadder)
_arrayWithCurrentLadder = [NSMutableArray arrayWithCapacity:10];
NSLog(@"kgjfkjg");
_arrayWithCurrentLadder = arrayWithCurrentLadder;
NSLog(@"dkfjdk");
}
- (IBAction)buildLadder:(UIButton *)sender {
if (self.firstLadder) {
*******************************************************************************************
NSLog(@"%@", [[self.arrayWithCurrentLadder lastObject] frame].origin.x);
*******************************************************************************************
if (sender.frame.origin.x == [[self.arrayWithCurrentLadder lastObject] frame].origin.x) {
sender.backgroundColor = [UIColor redColor];
[self.arrayWithCurrentLadder addObject:sender];
}
}
}
- (IBAction)startingLadder:(UIButton *)sender {
if (!self.firstLadder) {
[self.arrayWithCurrentLadder addObject:sender];
}
sender.backgroundColor = [UIColor redColor];
self.firstLadder = YES;
}
@end