ios - NSMutableArray UIButton 按下历史记录

标签 ios arrays sdk uibutton history

我目前正在生成一组按钮,效果很好。在此之外,每个按钮调用 -(void)onTouch 函数,其中进行一些数学运算以确定操作。这一切都很好,除了我想存储按下按钮的历史记录。我已经尝试了很多不同的方法来创建一个 NSMutableArray 并存储按下按钮的值,但是因为我每次只能在 -onTouch 操作中声明数组按下一个按钮,阵列被重置,因此它永远不会记住超过一个 Action 。如果我尝试在我的 header 中声明数组并在外部合成它,我要么得到 nsmutable 数组不是编译时事物的错误,要么它不存储任何东西(日志输出为“(null)”。有人可以粘贴一些有关如何声明一个数组的代码,该数组可以在 uibutton 按下事件发生的位置之外存储和附加 uibutton 标签?如果不清楚,我将在今晚晚些时候发布代码。

干杯

最佳答案

您不仅需要声明数组,还需要初始化它。如果你不初始化,你不一定会得到警告,但你会得到很多 nil 数据。

您只想初始化数组一次(正如您所注意到的),因此 viewDidLoad 是执行此操作的好地方。另一个好地方是自定义访问器...

- (NSMutableArray*)historyArray
{
    if (!_historyArray) {
       _historyArray = [[NSMutableArray alloc] init];
    }
    return _historyArray;
}

现在,当您第一次尝试 [self.historyArray addObject:sender] 时,访问器将注意到缺少 historyArray,创建一个并返回它。下一次它不会被重新创建,因为它已经存在。

关于ios - NSMutableArray UIButton 按下历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489008/

相关文章:

ios - 从 uitableview cellForRowAtIndexPath 委托(delegate)中删除行时应用程序崩溃

ios - Alamofire 返回 .Success on error HTTP 状态代码

arrays - 如何将单个元素添加到数组对象

C++ 交换成员数组和关联指针

Array对象数据的Java、ErroMax和Min?

ios - 尝试使用 Card.io-iOS-SDK 扫描卡时应用程序崩溃。

ios - 主线程被阻塞时避免 tableview didSelectRowatIndexPath 操作

android - 将 Apache HttpClient 与 Android SDK 23 结合使用。 NoSuchMethod

ios - 如何连接到其他应用程序用户?

javascript - Windows.System.Launcher.launchFileAsync(文件)不起作用:(