【发布时间】:2011-09-20 05:44:26
【问题描述】:
我有一个关于 NSMutableArray 的问题,它把 alloc / init 作为一个全局的东西。
我想要做的:只要将二进制变量“permission”设置为 true,就可以用加速度值填充 NSMutableArray。当我将权限设置为 false 时,我还想停止数组中的“记录”,然后将数组写入我通过电话通过电子邮件发送的文件。我整天编码(我可能不是最有经验的编码员”并修复了很多麻烦,比如权限设置,附件中没有文件(它是 nil,tadaaa)使用这个论坛但是对于这个我似乎无法找到的特殊问题一个解决方案。
关键是,附件为零,我想不出解决方案。
我在 .m 文件的开头执行以下操作:
BOOL permission = NO; // key variable to enter recording / not recording state
int i = 0; //used to determine place in dataArray
NSMutableArray *dataArray; // axis values get dumped in here
要开始录制,
- (void)recordStart { //setting permission to yes
permission = YES;
}
这允许 accelerometer:UIAccelerometer 填充 dataArray:
(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if (permission == YES) {
// NSLog(@"%f"@"%f"@"%f",acceleration.x,acceleration.y,acceleration.z);
NSString *valueString = [NSString stringWithFormat:@"%f, %f,
%f",acceleration.x,acceleration.y,acceleration.z];
[dataArray addObject:valueString];
// NSLog(@"%i",i);
NSLog(@"Array Count: %d", [dataArray count]);
}
}
NSLog总是返回0,所以数组是空的,stop方法不能把数组写入文件,因为它是nil:
- (void)recordStop { //setting permission to no
NSLog(@"Array Count: %d", [dataArray count]);
[[dataArray componentsJoinedByString:@",\n"] writeToFile:[self setFileLocation] atomically:YES encoding:NSUTF8StringEncoding error:NULL];
//代码省略
我是否需要将数组分配到其他地方然后全局?我无法在加速度计中执行此操作:函数,因为它只会在每次触发时重新执行此操作(我将频率设置为 100Hz)
有什么建议吗?
谢谢!
【问题讨论】:
标签: nsmutablearray nsarray accelerometer