我想保留一個可變的CGImageRefs集合。我是否需要將它們包裝在NSValue中,如果是的話,我如何正確包裝和解包它們?我可以逃脫使用C數組嗎?如果是的話,我該如何構建它,以後如何添加元素?使用UIImages而不是CGImageRefs作爲集合的元素是否成本更高?如何創建CGImageRefs的可變數組?
回答
通過image.CGImage獲取CGImageRef的UIImage可能是昂貴的。從文檔:
如果由於內存限制已清除映像數據,則調用此方法將強制將該數據加載回內存。重新加載圖像數據可能會導致性能損失。
如果你覺得舒服混合C++和Objective-C,你可以使用一個的std ::矢量用於存儲CGImageRef。從.M重命名你的源文件,以.mm和嘗試:
#include <vector>
...
CGImageRef i;
...
std::vector<CGImageRef> images;
images.push_back(i);
如果你想保持向量作爲Objective-C類中的一員,你應該給它分配在堆中,而不是堆:
頭文件
#include <vector>
using std;
@interface YourInterface : ...
{
vector<CGImageRef> *images;
}
,並在實現文件:
images = new std::vector<CGImageRef>();
images->push_back(i);
...
//When you're done
delete images;
images = NULL;
您可以直接添加CGI法師到NSMutableArray。您需要轉換爲(id)以避免編譯器警告。
CFType橋接到NSObject。你可以發送任何NSObject對任何CFType響應的消息。特別是 - 保持和釋放正常工作。
我還沒有找到任何可以將CFType轉換爲NSObject的文檔,請謹慎操作。更新可能會在未來破壞您的代碼。 – 2009-09-08 11:21:01
它應該記錄在某個地方。這是支持的。 (-Ken,Cocoa Frameworks) – Ken 2009-09-08 17:43:06
你怎麼把它弄出來?當我嘗試'CGImageRef img0 = [cgImages objectAtIndex:0];'我得到'從不兼容的指針類型初始化'。 – 2011-04-27 20:21:16
2011:萬一有人仍然在尋找 可以在NSValues包裝CGImageRef使用
+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type
因此:
CGImageRef cgImage = [self cgImageMethod];
NSValue *cgImageValue = [NSValue valueWithBytes:&cgImage objCType:@encode(CGImageRef)];
[array addObject:cgImageValue];
檢索:
CGImageRef retrievedCGImageRef;
[[array objectAtIndex:0] getValue:&retrievedCGImageRef ];
希望這有助於有人
- 1. 創建可變大小的數組
- 2. 如何在堆上創建可變長度的數組?
- 3. 如何在PowerShell中創建可變長度的char數組?
- 4. 在PyTables中,如何創建可變長度的嵌套數組?
- 5. 如何在swift中創建一個不可變數組的可變副本?
- 6. PHP codeigniter如何創建變量數組
- 7. 創建Java數組與可變
- 8. 從可變數組創建TableView
- 9. Swift創建參考可變數組
- 10. 如何創建或可變
- 11. 如何創建knockout.js可觀察數組?
- 12. 如何創建拆箱可變數組實例
- 13. 你如何在Swift中創建一個不可變數組?
- 14. 如何在列表中創建可變數量的數組項目列表中的可變數量的項目?
- 15. 用NSString的名稱創建可變數組變量
- 16. 如何創建創建關聯數組?
- 17. 從數組創建變量
- 18. 創建數組變量
- 19. 如何創建將整數添加到可變數組的按鈕?
- 20. C++ 14:如何使用可變參數模板創建值的數組1-100
- 21. 如何創建JFrame數組?
- 22. 如何創建空數組?
- 23. 如何創建JSON數組
- 24. 如何創建JSON數組.. ..?
- 25. 如何創建JTextField數組?
- 26. 如何創建matchcollection數組
- 27. 如何創建此數組?
- 28. 如何創建點數組?
- 29. 如何創建JButton數組
- 30. 如何創建pictureBoxess數組?
這比需要更復雜 - CGImages可以直接添加到NSMutableArray。 – Ken 2011-01-02 22:29:37