我最近將其中一個屬性的類型從@property (readonly) NSImage *someData
更改爲@property (readonly) float *someData
。數據是一大堆浮游物。在更改之前,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];
}
}
這適用於現在,而是拋出一個關於incompatible pointer type returning 'float *' from a function with result type 'id'
警告。所以它不可能是最終的解決方案。
所以我明白這一點的方式是你不能擁有指針類型的屬性。那是對的嗎?
此外,我真的想通過一個屬性傳遞指針。有沒有辦法在一些數據結構中包裝一個指針來使其工作?
編輯: float數組的大小可以是幾個100 Mb,所以我不想複製它,如果我可以幫助它。我想複製到一個NSArray會有所幫助,但是這肯定會對性能造成影響。
只要刪除'*' – beryllium
@beryllium:我傳遞一個浮點數組。 – bastibe
哦,在這種情況下請參閱@AnthonyBlake答案。我可以建議使用NSNumbers製作NSArray。 – beryllium