草庐IT

getter-setter

全部标签

objective-c 属性 - getter 和 setter

在UIView子类中我有这个属性:@property(nonatomic)CGFloatscale;#defineDEFAULT_SCALE0.90还有这个getter和setter:-(CGFloat)scale{if(!self.scale){returnDEFAULT_SCALE;}else{returnself.scale;}}-(void)setScale:(CGFloat)scale{if(scale!=self.scale){self.scale=scale;[selfsetNeedsDisplay];}}这是不正确的,因为例如检查getter中的self.scale会导

objective-c - 什么时候在 objective-c 中使用 setter 属性 'copy'?

我知道通常您对NSString使用copy,这样您的属性就会保持与您分配它时相同的值,即使在其他地方尝试重新设置它时也是如此。但我很难完全理解这个概念。这不是基本上适用于任何类型的对象(不仅仅是NSStrings)吗?所以我的问题是,“我应该将哪种属性设置为‘复制’,为什么?” 最佳答案 对象是简单的数据位,如字符串,不会引用应用程序中的大量其他对象,非常适合复制。当然,现在您可以保留字符串之类的东西。这会很好用。但是,如果您有一个可变字符串,并且您修改了它会怎样。现在,引用该字符串的所有其他对象都将看到该修改。这可能不是你想要的。

iOS Setters 和 Getters 以及带下划线的属性名称

所以我有一个名为description的NSString属性,定义如下:@property(strong,nonatomic)NSMutableString*description;当我定义getter时,我可以将其称为_description,如下所示:-(NSString*)description{return_description;}但是,当我定义一个setter时,如下:-(void)setDescription:(NSMutableString*)description{self.description=description;}它打破了上述getter(未声明的标识符)中

arrays - swift 语法 : index of array element accessed in setter?

假设我有一个带有didSet的字符串数组:varbar:[String]=[]{didSet{println("Setto\(bar)")}}设置一些元素给我们:bar=["Hello","world"]//Setto[Hello,world]bar[0]="Howdy"//Setto[Howdy,world]问题:在我的didSet中,如何获取已设置元素的索引? 最佳答案 您不能直接访问已更改元素的索引,部分原因是在特定索引处设置新值只是触发didSet处理程序的一个操作。任何变异方法都会导致调用:bar=["Hello","wo

ios - 使用来自另一个 View Controller 的 setter getter

我已经用它的类(.Swift)创建了一个CustomView(.Xib)。为了达到它的View(小部件)属性,我定义了几个getter和setter,现在我需要调用它们进行修改,但是当我从类中创建对象时,我无法修改属性或使用get{}方法。这是我自定义的View类代码:CustomClass.Swift@IBOutletweakvarbarLbl:UILabel!@IBDesignableclassCustomControl:UIView{@IBInspectablevarlblSetGetName:String!{set{barLbl.text=newValue}get{return

objective-c - 在 swift 中从 objective-c header 访问 getter 属性

在objective-cheader中,我们有一个如下属性:@property(nonatomic,assign,getter=isMyThingEnabled)BOOLenableMyThing;在swift中,任何像这样访问此属性的尝试都会生成一个错误,指出找不到该属性:myClassInstance.isMyThingEnabled那么如何在swift中访问属性isMyThingEnabled? 最佳答案 即使您在中为getter方法定义了自定义名称Objective-C,来自Swift的访问仍然使用属性名称,所以这有效:le

swift - Setter 在使用协议(protocol)转换访问计算变量期间调用结构

我为遵守协议(protocol)的结构创建了一个全局变量。变量有一个setter观察器,它在设置变量时完成任务。由于结构本身遵守协议(protocol),因此我希望变量的类型是协议(protocol)类型。protocolTestProtocol{varsomeInt:Int{getset}varcomputedVar:Int{get}funcfuncCall()->Int}structTestStruct:TestProtocol{varsomeInt:Int=1varcomputedVar:Int{return0}funcfuncCall()->Int{return2}}varte

ios - RealmSwift 嵌套对象 getter 不返回数据

我的Realm对象在尝试访问该属性时返回0时遇到一些问题。当我这样做时:print(calculation)print(calculation.homePrice)它给了我:PaymentsCalculation{id=90941762-E648-4377-ABA3-4BDA88880768;homePrice=200000;downPayment=40000;interestRate=0.04;homeInsurance=900;HOADues=0;loanType=30-yearfixed;hidePMI=0;}0.0为什么会这样?计算是来自User类的嵌套对象:importRea

swift - Swift 字典的通用项目 getter

假设我有一个Dictionary为此,我希望为实现StringLiteralConvertible的类型提供方便的setter/getter。.letitems=["Key1":"Value1","Key2":"Value2"]funcget(key:String,_defaultValue:T)->T{ifletvalue=items[key]{returnT(stringLiteral:value)//BUG}returndefaultValue}但是在有BUG注释的那一行放什么呢? 最佳答案 该行实际上是正确的,但上面的行应该

swift - 错误 : Variable with getter/setter cannot have an initial value

如何修复此错误?Variablewithgetter/settercannothaveaninitialvalue这是我的代码:functableView(tableView:UITableView,cellForRowAtIndexPathindexPath:NSIndexPath)->UITableViewCell{varcell:UITableViewCell=tableview.dequeueReusableCellWithIdentifier("cell")asUITableViewCell{//Errorcell.textLabel?.text=self.items[ind