2012-06-14 24 views
5

Tôi đã tuyên bố tình someProperty tài sản và tổng hợp nó:phương thức getter cho tai nạn bất động sản với EXC_BAD_ACCESS

@synthesize someProperty = _someProperty;

Nhưng khi tôi gọi nó trong mã, tôi nhận được EXC_BAD_ACCESS trong phương thức getter overter của tôi. Tại sao??

- (NSString *) someProperty { <---EXC_BAD_ACCESS HERE 
    if(!self.someProperty) 
     return self.someOtherProperty; 
    return self.someProperty; 
} 

Trả lời

9

Tôi nghĩ bạn có thể đang gặp phải tình trạng tràn ngăn xếp ! vì dòng

if(!self.someProperty) 

sẽ được gọi

- (NSString *) someProperty 

đệ quy cho đến khi tràn đệ quy stack.

Tương tự như vậy nếu nó có thể nhận được để trở về dòng, nó sẽ làm điều tương tự.

+0

duh - cảm ơn, công việc – user1337645

+5

+1: chúng tôi hiếm khi thấy tràn ngăn xếp ở đây trên SO :) –

+1

@ user1337645: workaround có thể sử dụng ivar '_someProperty' để giữ giá trị của thuộc tính' someProperty' và sau đó trong getter bạn sẽ kiểm tra cho '_someProperty' thay vì' self.someProperty'. Ngoài ra xin đừng quên chấp nhận câu trả lời của James vì ​​nó giúp bạn tìm ra vấn đề. –

Các vấn đề liên quan