Ios 如何使用getter和setter启动和停止函数?
在.h文件中Ios 如何使用getter和setter启动和停止函数?,ios,xcode,Ios,Xcode,在.h文件中 @interface ViewController : UIViewController { @private int intVariable1; } @property (readwrite,assign) int iVar; -(void)Callme; @end 在.m文件中 @implementation ViewController @synthesize iVar=intVariable1; -(void)C
@interface ViewController : UIViewController {
@private int intVariable1;
}
@property (readwrite,assign) int iVar;
-(void)Callme;
@end
在.m文件中
@implementation ViewController
@synthesize iVar=intVariable1;
-(void)Callme
{
NSLog(@”Callme called”);
}
-(void)setIVar:(int)inIVar
{
intVariable1 = inIVar;
[self Callme];
}
@end
我已经实现了当变量状态改变时调用“Callme”函数的代码,但是当我在viewdied load中调用函数setIVar时,它不起作用,有没有想过调用它?
我以前打电话的方式
[self setIVar:3];
如果要为getter/setter函数提供自己的实现,请不要在实现中使用
@synthesis
指令!这将生成自己的-(void)setIVar:(int)inIVar
和-(int)iVar
方法,这些方法可能会隐藏您的版本。反过来,如果您想要一个readwrite
属性,那么还必须实现getter,即-(int)iVar
只需删除
@synthesis iVar=intVariable1代码>行从您的实现,并把实现也-(int)iVar
你有没有尝试明确宣布该setter?亲爱的先生,我有点新的目标C和编码,你是什么意思明确宣布的setter?非常感谢。实现的名称与接口的名称不同。为什么?用setter=
替换属性声明的readwrite
部分(这是完全不必要的),然后替换setter函数的名称。@borrrden-这是错误的。我改正了!谢谢你!他们不会隐藏你的版本。事实上,如果您只定义一个setter或getter,那么您必须进行综合(假设读写)。如果方法已经存在,编译器知道不生成它们。:O。。。人们不让我投票表决我的问题,但我仍然想知道什么是最好的解决办法!:)谢谢您的回答,您对@borrrden answer说了什么?如果@borrrden是对的,那么您使用这些方法的方式会有其他问题。如果有更多相关的代码,请考虑发布更多代码。