草庐IT

Getter-Setter

全部标签

objective-c - iOS 在使用实例变量或 getter 方法时

我有一个关于使用getter和实例变量的问题。让我们看一个例子。假设我有一个.h文件:@property(nonatomic,strong)NSString*name在.m文件中,我以这种方式合成该变量:@synthesizename=_name;现在我的问题是:使用有什么区别:[self.nameaMethod]和[_nameaMethod]谢谢! 最佳答案 第一个通过getter方法访问ivar。第二个直接访问ivar。由于它是一个简单的综合属性,因此除了第一个进行额外的方法调用外没有太大区别。但是,如果属性是原子的、动态的,或

iphone - 如何干净地覆盖属性 setter ?

如果我想定义一个自定义的UIView子类,它在设置边界时执行某些操作,我该如何覆盖setter?覆盖setBounds似乎很危险,因为如果我理解正确的话,getter和setter名称不是公共(public)接口(interface)的一部分,可能随时更改。当然,我使用class_copyPropertyList在运行时查询类中定义的属性列表,然后查询setter的名称,最后使用class_addMethod添加方法,首先获取对前面方法的引用用于调用原始版本。所有这些看起来都很老套。有没有一种干净的方法来做我想做的事情,保证不会在未来的操作系统版本上中断?谢谢。

ios - 为 BOOL 变量编写 getter 和 setter

显然,对于obj-c,通常没有理由编写getter和setter(感谢有用的mr@synthesize)。所以现在,需要这样做,我遇到了我不知道如何编写它们的问题。:p我确定我可能不会以正确的方式解决我的问题-将我的对象子类化会容易得多-但我正在尝试编写类别代码来添加属性,因为(在开始)它更快,因为我想学习如何在我的应用程序中使用类别代码。我有这个:-(BOOL)isMethodStep{returnself.isMethodStep;}-(void)setIsMethodStep:(BOOL)theBoolean{if(self.isMethodStep!=theBoolean){s

ios - objective-c 中复制属性的自定义 setter

我是否必须在自定义setter中使用objective-c中的复制属性手动复制对象?例如,我有一个属性(property):@property(copy,nonatomic)NSString*someString;和自定义二传手:-(void)setSomeString:(NSString*)someString{//option1_someString=someString;//option2_someString=[someStringcopy];//dootherstuff}选项1是否足以用于自定义setter,或者我必须改用选项2才能复制对象? 最佳

ios - @property (readwrite, nonatomic, assign, getter = isCancelled) BOOL 取消 - xcode6 导致编译器错误

我一直在使用AFNetworking开发xcode5.0.2,一切都很完美。当我升级到xcode6GM时,我收到了警告:@property(readwrite,nonatomic,assign,getter=isCancelled)BOOLcancelled和错误:使用未声明的标识符“_cancelled”-(void)cancel{[self.locklock];if(![selfisFinished]&&![selfisCancelled]){[selfwillChangeValueForKey:@"isCancelled"];_cancelled=YES;我找到了thisansw

swift - SKEase action,如何使用Float changing Action Setter Block?

在以下用例中,我尝试为SKShapeNode的lineWidth设置动画。SKEase属于精彩SpriteKitEasing来自CraigGrummitt的github存储库。它的一个功能是float更改缓动Action,它似乎会随时间改变float的值。但是我不知道如何使用它。Xcode在输入时给出以下建议:letlineWeight=SKEase.createFloatTween(Void))对于此库中的其他SKEase操作,Xcode对轻松类型非常有帮助,并有助于确定要输入的内容。有了这个,我不知道AHEasingFunctions有哪些选项...我可能会找到。但我完全不知道最后

swift - 我们可以将 willSet 和 didSet 与 getter 和 setter 一起使用吗?

我正在阅读有关swift属性的willset和didset我开始知道我可以将它们与具有如下初始值的变量一起使用:varproperty="name"{willSet{print("propertyisabouttochanged")}didSet{ifproperty==oldValue{print("valuesaresame")}else{print("valuechanged")}}}property="anothername"我可以像下面这样使用willget和didset吗:varproperty2:String{willSet{print("valueisabouttoch

ios - 当计算实例变量而不是存储实例变量时,行为会有所不同

我有一个从xib文件启动的自定义UIView类。它具有名为title的实例属性,类型为String?。每当设置title属性时,UITextField的文本都会更改为title属性的值。如果title属性是存储属性,则程序按预期工作。如果title属性是一个计算属性,那么程序会因EXC_BAD_ACCESS错误而崩溃,我认为这是因为IBOutlet还没有已初始化。谁能解释为什么如果title是一个存储属性,它可以工作,但如果它是一个计算属性,它就会失败?以下是源码——NibView是UIView的子类,负责xib文件的加载classNibView:UIView{overrideinit

ios - 如何使用 Swift 为从 Storyboard生成的 UIScrollView 创建一个 setter?

使用界面构建器,我将一个UIScrollView拖到我的ImageViewController上。我从ScrollView控制拖动到我的ImageViewController上以获得一个IBOutlet来控制scrollView。其中添加了代码:@IBOutletvarscrollView:UIScrollView现在我想在scrollView初始化后立即设置一个属性。在objective-c中,您可以编写此函数来实现它:-(void)setScrollView:(UIScrollView*)scrollView{_scrollView=scrollViewself.scrollVie

ios - Setter 在 Swift 中不起作用

我正在尝试使用设置大小和原点的快捷方式扩展UIView,如Obj-C中所做的那样here.getter工作很好,但setter不行。任何想法为什么?我做错了什么?这是我从Obj-C重写为Swift的代码:extensionUIView{...varheight:CGFloat{get{returnself.frame.size.height}set{varr=self.frame;r.size.height=height;self.frame=r;}}这是另一个,因为CGRect属性是“val”varwidth:CGFloat{set{self.frame.size.width=wid