相关疑难解决方法(0)

iOS自动@synthesize而不创建ivar

如果我有一个@property我不想通过ivar我支持的,我只是省略了@synthesize并且有手动的getter,它返回了一个计算值.

但是,现在自Xcode 4.4以来我没有指定@synthesizedo编译器会自动生成它.这是否意味着它还会生成一个ivar我不需要/使用它的偶数?

我最终可以通过使用强制不自动合成dynamic.然而,这将是错误的,因为@dynamic如果getter和setter在其他地方或运行时实现,则应该用于关闭警告.

ios ivar

15
推荐指数
1
解决办法
4429
查看次数

Objective-C:使用实例变量覆盖Getter和Setter(使用_)

我正在学习Swift编程语言,在此期间,我有时会与旧的Objective-C编程语言及其代码保持联系。

我是一个绝对的初学者,因此我有一些问题可以更好地了解“塞特犬”和“吸气剂”。

因此,我知道我可以通过.h文件中的花括号创建一个实例变量,但通常使用属性。这些属性由实例变量支持,并自动提供Getter和Setter方法。

例:

车辆.h文件:

@interface Vehicle : NSObject 
@property int myProperty;
@end
Run Code Online (Sandbox Code Playgroud)

因为创建了此属性,所以不必在vehicle.m文件中声明Getter和Setter方法,因为它们是由编译器自动创建的。因此,我可以创建一个车辆对象,设置并获取值。

主目录

Vehicle *myvehicle = [[vehicle alloc] init];
[myvehicle myProperty] // myvehicle.myProperty
[myvehicle setMyProperty : 10] // myvehicle.myProperty = 10;
Run Code Online (Sandbox Code Playgroud)

现在,我了解到可以覆盖我创建的属性“ myProperty”的自动创建的Getter和Setter方法。在声明自己的Getter和Setter版本时,我必须在vehicle.h和vehicle.m文件中声明两个方法。在vehicle.m文件中,我没有通过使用self关键字来调用对象,而是通过使用它自动创建的实例变量(_myProperty)来调用该对象。这样对吗?

我试过了,但总是出错,我不知道为什么,重点是什么。

车辆.h文件:

@interface Vehicle : NSObject 
@property int myProperty;
-(int) myProperty; //my new Getter method
-(void) setMyProperty: (int)updatedMyProperty; //My new Setter method
@end
Run Code Online (Sandbox Code Playgroud)

车辆.m文件:

    @implementation Vehicle

    -(int) myProperty {
      if (! _myProperty) {
        _myProperty = NO;
    }
      return _myProperty;
    }

   -(void) setMyProperty: (int)updatedMyProperty …
Run Code Online (Sandbox Code Playgroud)

oop overriding objective-c getter-setter

5
推荐指数
1
解决办法
4429
查看次数

标签 统计

getter-setter ×1

ios ×1

ivar ×1

objective-c ×1

oop ×1

overriding ×1