我正在尝试对我的 arrayWithCurrentLadder
属性进行延迟实例化,以便我的数组至少被分配和启动一次。然而,似乎我的 setter 从未真正被调用,因为当我尝试对数组中的对象执行操作时,什么也没有发生,所以我决定尝试使用 NSLog
数组中的对象来查找如果我得到一个实际值(我在该行代码旁边加了星号,以便您可以看到)并且调试器说 (null)
,所以我假设我的 setter 实际上没有设置。我在 setter 中添加了随机 NSLog 以便再次查看,但消息甚至没有显示在调试器中。为什么我的 setter 无法设置?
#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
最佳答案
您应该重写 getter 而不是 setter:
- (NSMutableArray *)arrayWithCurrentLadder
{
if (nil == _arrayWithCurrentLadder) {
_arrayWithCurrentLadder = [[NSMutableArray arrayWithCapacity:10] retain];
}
return _arrayWithCurrentLadder;
}
关于objective-c - 我怎样才能让我的 setter 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387808/