我正在尝试了解如何在按下按钮时将标签设置为数组中的文本。当我按下按钮时,标签消失,然后什么都没有出现。代码中没有崩溃。
相关代码:
-(void)setupArray {
wordArray = [[NSMutableArray alloc] init];
[wordArray addObject:@"test1"];
[wordArray addObject:@"test2"];
[wordArray addObject:@"test3"];
}
- (IBAction)start:(id)sender {
int value = (arc4random() % 3) + 1;
self.typeThis.text = [self.wordArray objectAtIndex:value];
}
typeThis是标签名称,我想我已经连接了所有内容,即设置按钮/代理/等...我不明白为什么它不起作用。有人可以帮忙吗?
答案 0 :(得分:2)
考虑到你已经正确绑定了所有内容并且你不在ARC之下。这可能会给你带来问题。
当您alloc
wordArray
时,您可以尝试使用以下代码段。
NSMutableArray tempArray = [[NSMutableArray alloc] init];
self.wordArray = tempArray;
[tempArray release];
如果您在ARC下,可以尝试self.wordArray = [NSMutableArray array];
然后将对象添加到self.wordArray
,即[self.wordArray addObject:@"test1"];
。以下是some explanation arc4random()
。
编辑: 以下是Automatic Reference Counting和quote from the public iOS 5页面的公开规范:
Objective-C的自动引用计数(ARC)使内存成为可能 管理编译器的工作。通过使用新的Apple启用ARC LLVM编译器,您永远不需要再次键入retain或release, 大大简化了开发过程,同时减少了开发过程 崩溃和内存泄漏。编译器完全了解 你的对象,并在它不再是瞬间释放它们 使用,所以应用程序运行速度与以往一样快,可预测,流畅 性能
可以检测ARC是否已启用。只需将以下代码段添加到任何需要ARC的文件中。
#ifndef __has_feature
#define __has_feature(x) 0 /* for non-clang compilers */
#endif
#if !__has_feature(objc_arc)
#error ARC must be enabled!
#endif
更多信息: http://clang.llvm.org/docs/LanguageExtensions.html#__has_feature_extension
HTH。
答案 1 :(得分:1)
你的'+1'给你一个1到3之间的结果,你的索引从0到2,所以我希望它在3中出错一次。
答案 2 :(得分:0)
这是ARC吗?如果是这样,wordArray是否声明为强?