Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用getter和setter启动和停止函数?_Ios_Xcode - Fatal编程技术网

Ios 如何使用getter和setter启动和停止函数?

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

在.h文件中

@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是对的,那么您使用这些方法的方式会有其他问题。如果有更多相关的代码,请考虑发布更多代码。