Objective c 通过NSTimer传递字符数组
我试图通过NSTimer中的选择器方法发送一个字符数组。我的targetMethod将获取数组的前36个值,并每隔一段时间执行其函数,每次递增36,直到到达char数组的末尾。但是,在使用以下格式时,NSTimer似乎只允许您使用userInfo发送NSObjects:Objective c 通过NSTimer传递字符数组,objective-c,arrays,char,nstimer,Objective C,Arrays,Char,Nstimer,我试图通过NSTimer中的选择器方法发送一个字符数组。我的targetMethod将获取数组的前36个值,并每隔一段时间执行其函数,每次递增36,直到到达char数组的末尾。但是,在使用以下格式时,NSTimer似乎只允许您使用userInfo发送NSObjects: [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(targetMethod:) userInfo:nil
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:NO]
我也没有找到一种使用NSDictionary的方法,我更希望不必执行代价高昂的NSArray转换
我正在发送的字符数组包含36-9500个值。是否可以将字符数组与NSTimer一起使用?如果没有,是否有一种方法可以使用全局指针引用数组,然后可以通过targetMethod中的指针访问该数组?如果您不想转换为NSObjects,因为您认为这对您的应用程序来说成本太高,您可以始终使char数组全局/公开可用 只需为它创建一个属性或实例变量,并从选择器中以这种方式访问它
否则,您必须将其转换为NSString或NSData并以这种方式传递。除此之外,我想不出一种干净地覆盖数据传递的方法。一个
NSTimer
的userInfo对象不需要是一个NSDictionary
,因此实际上你可以将你的NSArray
作为userInfo
传递。但是,我相信目标方法的第一个参数将传递NSTimer
实例本身,这可能不是您想要的。您可能更幸运的是,您可以在2秒内传递一个要执行的块,并直接使用NSArray
char array[]
或char*array[]
?如果是前者,您可以轻松地将其转换为NSString
或NSData
,然后对其进行重新分解。您不能将任何参数传递给targetMethod:
选择器。根据定义,它将只获取NSTimer
,因为它是一个参数。userInfo可以是任何类。您可以传递NSString或NSData本身。已更新!谢谢你的评论