Tôi muốn thiết lập thuộc tính CGPoint thành một điểm cụ thể (giữa màn hình). Các phương pháp khác sau đó có thể muốn thay đổi thuộc tính này. Suy nghĩ của tôi là khởi tạo nó nếu trống trong getter, nhưng tôi nhận được thông báo kiểu đối số không hợp lệ 'struct CGPoint' để biểu hiện đơn nhất. Tôi cũng đã cố gắng sử dụng nếu tài sản == nil hoặc 0 nhưng không có niềm vui.Làm cách nào để kiểm tra xem CGPoint đã được khởi tạo chưa?
Mọi suy nghĩ?
-(CGPoint)graphOrigin
{
// initialise to centre of screen if has not been set
if(!_graphOrigin) // this expression is causing the problem
{
CGPoint origin = CGPointMake(self.bounds.origin.x + self.bounds.size.width/2, self.bounds.origin.y + self.bounds.size.height/2);
_graphOrigin = origin;
}
return _graphOrigin;
}
Tôi thích câu trả lời này nhiều hơn, bởi vì ** {0.0, 0.0} ** là một tọa độ thực sự tồn tại và hợp lệ. Sử dụng nó như là một điểm rỗng có thể phá vỡ logic chương trình của bạn. – Stas
Đặt CGPoint thành -1, -1 dường như ít gây hại cho tôi hơn các đề xuất khác. Việc thêm một biến boolean riêng biệt có vẻ giống như một điểm vi phạm Chân lý đơn lẻ - nó sẽ cho kết quả không chính xác nếu nó không được cập nhật bất cứ khi nào trạng thái của biến được thay đổi. – arlomedia
Có lẽ lập trình kinh khủng, nhưng nếu bạn tuyệt vọng, bạn luôn có thể vượt qua {NAN, NAN} làm tọa độ với CGPoint của bạn. – Tommyixi