CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
Điều này trả về một float, hoặc một mảng phao? Dường như dấu hoa thị là viết tắt để tạo mảng. Đúng không?
Sắp xếp.
CGFloat *colors
tuyên bố biến có chứa con trỏ đến ít nhất một CGFloat. CGColorGetComponents
trả về một con trỏ tới một số CGFloats, một cái khác với một mảng C khác. Bạn lấy con trỏ đó và gán nó vào (đặt con trỏ vào) biến số colors
.
Khai báo biến không tạo mảng. Trên thực tế, không phải CGColorGetComponents
. Bất cứ thứ gì tạo ra đối tượng CGColor đã tạo mảng và lưu nó bên trong đối tượng; CGColorGetComponents
cho phép bạn có con trỏ đến bộ nhớ đó.
Khai báo biến số CGFloat *colors
chỉ tạo một vị trí — biến - để lưu con trỏ vào một hoặc nhiều CGFloats. Điều trong biến là con trỏ, và điều ở con trỏ đó là mảng.
Nếu điều này vẫn chưa rõ ràng, hãy xem Everything you need to know about pointers in C.
Nguồn
2009-04-27 09:55:42
@htw Cảm ơn. Điều này có nghĩa là nó luôn luôn là RGBA? Tôi đã không nhìn thấy một không gian màu HSBA bất cứ nơi nào trong api của. –
Không phải luôn luôn - CGColor có thể đã được tạo trong không gian màu CMYK hoặc màu trắng. Tuy nhiên, theo tài liệu lập trình màu của Apple (http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/DrawColor/index.html), không gian màu HSBA được chỉ định là không gian màu RGBA. Vì vậy, vâng, trong trường hợp này, nó sẽ trả về các thành phần RGBA, vì màu sắc được tạo ra với các thành phần HSBA. – hbw
@htw Cảm ơn! Tôi đã xem qua các tài liệu. Đây chắc chắn là những gì tôi cần tìm. Rất hữu ích! –