gpt4 book ai didi

ios - 面向初学者的变量赋值和字符串数组 Obj-c (iOS)

转载 作者:行者123 更新时间:2023-11-28 21:32:06 25 4
gpt4 key购买 nike

我创建了一个单 View 应用程序,添加了一个标签、一个不可编辑的 TextView 和一个按钮,我有一个字符串数组。真的只是想单击按钮并随机更改字符串。

- (IBAction)viewNextPressed:(id)sender {
NSArray *affirmationStrings = @[
@"String 1 Pressed",
@"String 2 Pressed",
@"String 3 Pressed"
];

//Generate a random index from our array
int randomNIndex = arc4random() % [affirmationStrings count];

//Display a string from our array
self.displayAffirmationText.text = affirmationStrings[randomNIndex];

}

@end

显然,这对于这个示例来说效果很好,但它的效率非常低,因为每次单击按钮时都会生成数组。存储数组的最佳位置在哪里,以便它在加载时生成,我可以在需要时访问它?

我看到了 viewDidLoad,但作为初学者,我想尝试了解简单任务的最佳实践。其次,我为 500-1k+ 字符串的大样本存储字符串的方式是否合适?

最佳答案

对于相对较少数量的字符串,更好的选择是:

  • 向您的类添加属性或实例变量
  • init 方法中初始化所述属性或实例变量,或者在 View Controller 的情况下,在 viewDidLoad 中初始化。

因此,在实例变量的情况下:

@implementation MyViewController
{
NSArray *_affirmationStrings;
}

...

- (void)viewDidLoad
{
[super viewDidLoad];
_affirmationStrings = @[ ... list of strings ... ];
}

然后通过_affirmationStrings引用它。

在属性的情况下,对其他类可见,只读,延迟初始化:

在.h中:

@interface MyViewController : UIViewController

@property (readonly) NSArray *affirmationStrings

@end

在.m中:

- (NSArray *)affirmationStrings
{
if (!_affirmationStrings)
_affirmationStrings = @[ ... list of strings ... ]
return _affirmationStrings;
}

然后通过self.affirmationStrings引用它。

还有其他方法可以让它读/写(这样你就可以从另一个类中设置值),或者只在类中可见,等等。

如果您想处理大量字符串,您可能至少希望将列表移到您的代码之外,移动到外部文件(文本文件、JSON、XML、plist...)。然后您可以立即从那里加载它并保留它,或者按需加载它(一旦您不再需要它就忘记它,因此如果您再次需要它则重新加载它)。

您还可以通过 Core Data 或直接使用 SQLite 将数据存储在数据库中。

这真的完全取决于您的目标/要求。

关于ios - 面向初学者的变量赋值和字符串数组 Obj-c (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com