2012-06-14 69 views
5

我聲明的屬性someProperty併合成它getter方法:用於與EXC_BAD_ACCESS屬性崩潰

@synthesize someProperty = _someProperty;

但是,當我在代碼中調用它時,在getter overide方法中得到了EXC_BAD_ACCESS。爲什麼??

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

回答

9

我想你可能會得到一個堆棧溢出!因爲線路

if(!self.someProperty) 

將調用

- (NSString *) someProperty 

遞歸直到遞歸堆棧溢出。

同樣,如果它可以到達返回線,它會做同樣的事情。

+0

duh - 謝謝,作品 – user1337645

+5

+1:我們很少在這裏看到堆棧溢出,因此:) –

+1

@ user1337645:解決方法可以使用ivar'_someProperty'來保存屬性'someProperty'的值,然後在getter中檢查用於'_someProperty'而不是'self.someProperty'。也請不要忘記接受James的回答,因爲它可以幫助您找到問題。 –

相關問題