当前位置:  开发笔记 > 编程语言 > 正文

正确使用UIActionSheet委托的方法?指针映射到相同的内存

如何解决《正确使用UIActionSheet委托的方法?指针映射到相同的内存》经验,为你挑选了1个好方法。

我正在使用actionSheet传递的actionSheet变量:didDismissWithButtonIndex:将调用的actionSheet与我班级中的UIActionSheet变量列表进行比较.这似乎是委托方法旨在区分事件的方式.

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

if (actionSheet == actionSheet1) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

if (actionSheet == actionSheet2) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

}

每次显示UIActionSheet时,我都会将UIActionSheet的一个实例分配给其中一个类变量,设置显示属性,显示它并释放它.

一开始这很顺利.问题是在运行一段时间后,最终两个UIActionSheet指针(上面的代码示例中的类变量actionSheet1和actionSheet2)将最终指向同一个内存,具体取决于运行时发生的情况,从而导致委托中的两个if语句评估真实的方法.不好.

现在,如果我每次运行只分配一次UIActionSheet并保留内存(从不调用release),这不应该发生.但我想在这里保守.Apple是否打算以这种方式使用该代表?



1> August..:

创建UIActionSheet时,请为其添加标记:

actionSheet.tag = 1; // or 2 or 3 or ...

然后,在您的委托方法中,根据标记切换以确定该特定工作表的行为.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有