objective-c - 我怎样才能让我的 setter 设置?

标签 objective-c ios xcode setter

我正在尝试对我的 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/

相关文章:

android - 如何验证已发布的 IOS/Android 应用的应用开发语言?

ios - 在 iOS 模拟器上测试时出错 : Couldn't register with the bootstrap server

swift - 将 TensorFlow 导入 Xcode : The active toolchain is not compatible with playgrounds

ios - Star micronics mpop iOS SDK - 使用空白代码页保存和打印字符

ios - 如何从 UICollectionView 过渡到 UIViewController,如 Pinterest/Evernote

html - 光标外的 iOS 11 Safari 引导模式文本区域

iOS Core Data - 如何为数组中的每个对象请求实体?

ios - 检测 iOS 11 设备上安装的证书

objective-c - 为什么我无法在类里面访问该属性?

objective-c - 使用大于 31 的按位移位初始化 uint64_t 会导致分配零