Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
重写Objective-C中的合成属性是否正确?_Objective C_Synthesize - Fatal编程技术网

重写Objective-C中的合成属性是否正确?

重写Objective-C中的合成属性是否正确?,objective-c,synthesize,Objective C,Synthesize,我已重写合成属性,因为我想添加NSAssert 这是否可以执行(即覆盖)或被视为不良做法 @synthesize someField; -(NSString*)someField { NSAssert(someField != nil,@"someField"); return someField; } 那很好。从: 您可以使用@synthesis关键字 告诉编译器它应该 合成setter和/或getter 如果不使用,则为属性指定方法 在@implementation中提供

我已重写合成属性,因为我想添加NSAssert

这是否可以执行(即覆盖)或被视为不良做法

@synthesize someField;

-(NSString*)someField {
    NSAssert(someField != nil,@"someField");
    return someField;
}
那很好。从:

您可以使用@synthesis关键字 告诉编译器它应该 合成setter和/或getter 如果不使用,则为属性指定方法 在@implementation中提供它们 街区


因此,如果您提供了它们,那么编译器将使用您的,而不考虑@synthesis指令。

您为什么要这样做?在现代(64位和iOS)运行时中,这是一种创建IVAR的简便方法。我想你说的是隐式定义的IVAR,这是一个完全不同的概念。提供自己的setter和getter有很多原因,比如永久存储、数据库访问、缓存等;我的评论毫无意义。谢谢你为后代指出这一点。(说真的!):)