Tôi biết cách khắc phục sự cố mà tôi sắp phác thảo, tuy nhiên, tôi hơi bối rối về lý do mã kịch bản hoạt động trong trình mô phỏng iOS nhưng không phải trên iPad của tôi.Chỉ định thuộc tính CGColor hiện có cho thuộc tính CGColor hoạt động trong Trình mô phỏng iOS, không phải thiết bị iOS. Tại sao?
Tôi có phương pháp kiểm tra các thuộc tính khác nhau và sau đó đặt màu nền của CALayer
tùy thuộc vào trạng thái của thuộc tính. Đoạn mã sau tương tự như phương pháp gán màu của tôi:
//This will be the CALayer BGColor...
CGColor c = UIColor.blueColor.CGColor; //Blue is the default
switch (myState)
{
case state_one:
c = UIColor.greenColor.CGColor;
//... more code ...
break;
case state_two:
c = UIColor.redColor.CGColor;
//... more code ...
break;
case state_three: //multiple cases are like the state_three case.
//Other code, but I don't need to assign the color. Blue works...
}
myCALayer.backgroundColor = c; //Oh-noes!!! Here we get the dreaded EXC_BAD_ACCESS on iPad
//...more code dealing with the layer.
Đoạn mã trên hoạt động không có sự cố trong Trình mô phỏng. Tuy nhiên, khi tôi chạy ứng dụng trên iPad của tôi, nó bị treo tại nhiệm vụ backgroundColor
.
Tôi có thể sửa lỗi này bằng cách loại bỏ biến số CGColor
và gán màu nền từ trực tiếp trong chuyển đổi/trường hợp của tôi và đó là những gì tôi định làm.
Tuy nhiên, tôi tò mò. Tại sao điều này sẽ làm việc trong một môi trường chứ không phải môi trường khác?
CẬP NHẬT
Couple thứ. Trước tiên, điều đáng nói là đây là một dự án ARC, sử dụng Xcode 4.2, nhắm mục tiêu thiết bị iOS 5. Ngoài ra, mã phân chia màu của tôi không hoàn toàn giống như tôi có một loạt các định nghĩa mà tôi sử dụng để thiết lập các màu này vì chúng được tham chiếu trong toàn bộ ứng dụng của tôi.
Đây là những gì một vài trong số các #define
báo cáo trông giống như:
#define BLUE [UIColor colorWithRed:8.0/255.0 green:80.0/255.0 blue:150.0/255.0 alpha:1.0].CGColor
#define GREEN (UIColor.blueColor.CGColor)
//...and there are about 6 other colors
tôi đã cố gắng để đơn giản hóa mã của tôi bởi vì trình biên dịch nên thay thế các refs để refs của tôi để định nghĩa của tôi. Tuy nhiên, nó chỉ đáng nhắc đến trong trường hợp.
Bạn có chắc chắn để bao gồm các khuôn khổ QuartzCore trong từng xây dựng? –
Mỏ của tôi thậm chí sẽ không được xây dựng với 'CGColor' của bạn có thể là' CGColorRef' –
Tôi đã thêm khung công tác và tham chiếu các tiêu đề từ bên trong tệp mã đang thực hiện nhiệm vụ này. – RLH