未在UIView中调用自定义设置器

问题描述 投票:1回答:5

我正在为bool属性使用自定义设置器,因为当此值更改时,我需要做一些额外的工作。这是我的实现:

MyView.h

@interface MyView : UIView 

@property (nonatomic) BOOL isSelected;

@end

MyView.m

@implementation MyView

@synthesize isSelected;

-(void)setIsSelected:(BOOL)_isSelected
{
    self.isSelected = _isSelected;

    //Custom code that changes UI based on bool state  


}

@end

但是没有传给二传手!有人可以告诉我为什么吗?

ios iphone objective-c ios5 getter-setter
5个回答
6
投票

调用属性和设置方法的两种方法。

1,句点语法:self.isSelected = YES;2,直接调用。 [set setIsSelected:YES];

@interface MyView : UIView 
@property (nonatomic) BOOL isSelected;
@end

@implementation MyView
@synthesize isSelected;
-(void)setIsSelected:(BOOL)_isSelected
{
    isSelected = _isSelected;
    //Custom code that changes UI based on bool state  
}
@end

您的应用程序崩溃,因为您在setter方法中调用了self.isSelected = _isSelected,它将以递归和无休止的方式调用setter方法,直到堆栈溢出!!>


1
投票

例如在viewDidLoad中设置值self.isSelected=YES;,或要在其中设置此值的位置。


0
投票

尝试一下,


0
投票

[尝试将-(void)setIsSelected:方法的参数_isSelected更改为其他变量,例如selected,并使用它在该方法中将属性分配为_isSelected = selected;


-2
投票

[在某些情况下,当您的对象为nil时,将使您感觉未调用setter和getter。希望您能解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.