仅在NSString更改时运行

obj*_*001 1 objective-c nsstring

这是我要做的:

- (void) fullDMXReceived:(NSString*)finalData {

if (finalData changed since the last time fullDMXReceived ran) {
  //DO SOMETHING
}

}
Run Code Online (Sandbox Code Playgroud)

每隔50毫秒,就会出现一个新值.有时它与最后一个相同 - 在这种情况下,我不希望// dosome事发生.仅限NSString finalData更改.

我知道这可能是一个简单的答案,我一直在搞乱它,但无济于事.

谢谢!

das*_*ght 5

将最后一个字符串保存在变量中,针对旧值检查新值,如果两者相等则跳过操作.

当值不同时,运行该操作,并更新先前值以匹配新值:

NSString *lastValue = nil; // <<== Make this an instance variable
...
if (![finalData isEqualToString:lastValue]) {
    lastValue = finalData;
    // Run the operation
    ...
}
Run Code Online (Sandbox Code Playgroud)