gpt4 book ai didi

iPhone 应用程序在访问 NSString 时随机退出

转载 作者:行者123 更新时间:2023-12-03 20:19:52 26 4
gpt4 key购买 nike

我的应用程序中的 NSString 出现问题。
我已经在 View Controller 的头文件中定义了它。

    NSString *locationCoordinates;

我在 -(void) 方法中设置了它的值。

- (void)locationUpdate:(CLLocation *)location {
<...>

NSArray *locArray = [locString componentsSeparatedByString:@", "];

NSString *xCoordinate = [locArray objectAtIndex:0];
NSString *yCoordinate = [locArray objectAtIndex:1];

locationCoordinates = [NSString stringWithFormat:@"%@,%@", xCoordinate, yCoordinate];
}

在这个方法中,我可以将其打印到控制台

NSLog(locationCoordinates);

但是如果我想用另一种方法在控制台中查看它,我的应用程序会立即退出。

- (IBAction)saveAndReturnToRootView {
NSLog(locationCoordinates);
}

控制台告诉我:

2010-02-24 14:45:05.399 MyApp[73365:207] *** -[NSCFSet length]: unrecognized selector sent to instance 0x4c36490
2010-02-24 14:45:05.400 MyApp[73365:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFSet length]: unrecognized selector sent to instance 0x4c36490'
2010-02-24 14:45:05.401 MyApp[73365:207] Stack: (
32887899,
2434934025,
33269819,
32839286,
32691906,
32417461,
32527181,
32527085,
32747749,
356942,
630491,
63461,
2868313,
4782069,
2868313,
3275682,
3284419,
3279631,
2973235,
2881564,
2908341,
40984273,
32672640,
32668744,
40978317,
40978514,
2912259,
9744,
9598
)

如何解决这个问题?

提前致谢;-)

最佳答案

您没有保留字符串,因此内存正在被清除。当您尝试访问它时,这会导致崩溃。

要保留它,您可以添加以下行

[locationCoordinates retain];

记住当你不再需要它时释放它 - 可能是在你的类的析构函数中,否则你将出现内存泄漏。

<小时/>

Objective C 中的标准做法是使用此类类成员的属性。在头文件中使用

@property (nonatomic, retain) NSString *locationCoordinates;

然后在执行中chuck中

@synthesize locationCoordinates;

当您访问位置坐标时,通过 self 访问它:

self.locationCoordinates = [NSString stringWithFormat:@"%@,%@", xCoordinate, yCoordinate];

Objective C 将创建一个 getter 和 setter 属性,以最有效的方式为您处理保留。

顺便说一句,属性中的 nonatomic 关键字告诉 Objective c 您不需要它围绕属性访问创建任何线程同步。如果您打算对类进行多线程处理,则应考虑删除非原子。这将确保属性访问是线程安全的。

没有必要做任何可以让编译器为您做的工作!

关于iPhone 应用程序在访问 NSString 时随机退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326498/

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