gpt4 book ai didi

objective-c - 如何将 float * 数组作为属性传递?

转载 作者:行者123 更新时间:2023-12-03 16:52:53 24 4
gpt4 key购买 nike

我最近将其中一个属性的类型从 @property (readonly) NSImage *someData 更改为 @property (readonly) float *someData。数据是一个大的 float 组。在更改之前,NSImage 是根据该 float 据创建的。

从那时起,每当我在代码中调用 [self didChangeValueForKey:@"someData"] 时,我都会收到以下错误:

[MyController 0x109161710> valueForUndefinedKey:]:
this class is not key value coding-compliant for the key someData.

所有其他属性都继续正常工作。现在解决此问题的一种方法是使用以下代码:

- (id)valueForUndefinedKey:(NSString *)key {
if ([key isEqualToString:@"someData"]) {
return someData; // throws a warning because (float*) is not id
} else {
return [super valueForUndefinedKey:key];
}
}

这目前有效,但会引发有关从结果类型为“id”的函数返回“float *”的不兼容指针类型的警告。所以这不是最终的解决方案。

所以我的理解是你不能拥有指针类型的属性。这是正确的吗?
另外,我真的想通过属性传递该指针。有没有某种方法可以将指针包装在某些数据结构中,从而使这项工作正常进行?

编辑: float 组的大小可能有几百兆,所以如果可以的话我不想复制它。我认为将其复制到 NSArray 中会有所帮助,但这肯定会降低性能。

最佳答案

根据@BastiBechtold 下面的评论:使用 NSValue 指向数组是将 float 组封装在 NSObject 中而不进行复制的最佳方法。

关于objective-c - 如何将 float * 数组作为属性传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148448/

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