草庐IT

caching - Swift getter 代码重复

我正在尝试在swift中使用变量,这些变量是关键的应用程序范围的用户设置,因此它们必须在每次更改后保存到磁盘。这些变量很少,我对应用程序启动后从磁盘进行的第一次读取感到满意。我有类似这样的代码:var_myEnumMember:MyEnum?varmyEnumMember:MyEnum{get{ifletvalue=_myEnumMember{//inmemoryreturnvalue}varc:Cache=Cache()varstoredValue:MyEnum?=c.get("SomeStorageKey");ifletvalue=storedValue{//existsondis

ios - Swift:当我们对 Int 进行扩展时,属性 getter 中的 "self"应该是什么?

这似乎是一个错误并在Xcode7中用Swift(2b3)解决了为了方便观察,我们把代码贴到playground上,结果会在评论中指出。extensionInt{varsq:Int{mutatingget{self//5self=self*self//25returnself//25Here25ismade}}}varn:Int=5//5n.sq//25n//5Whyisn't25?我的问题是,如果属性sq的getter中的self指的是整数本身,为什么n在之后保留5>n.sq做了?让我们看看如果我们只添加一个setter会发生什么:extensionInt{varsq:Int{muta

ios - 使用 Objective-C 属性 getter 实现 Swift 协议(protocol)

我想为Swift中所有可突出显示的View创建一个共同的祖先。我希望已经存在的实现highlighted属性的UIKit类开箱即用,所以在阅读thisanswer之后并检查theObjective-CgetterisdefinedasisHighlighted我将协议(protocol)定义更改为:@objcprotocolHighlightable{varhighlighted:Bool{@objc(isHighlighted)getset}}所以UILabel和UIControl的协议(protocol)实现就这么简单:extensionUILabel:Highlightable{

objective-c - 在 Swift 中命名 Obj-C 属性 getter 和 setter

我正在寻找访问的通用解决方案:Obj-C来自Swift的命名属性getter和命名属性setter符合具有readonly属性的Objective-C@protocol类似于CreatinganObjective-CequivalentGetterandSetterinSwift,已关闭,但未提供令人满意的答案。Objective-C到Swift属性示例:我有一个Objective-C协议(protocol),它定义了两个有问题的属性,一个带有自定义getterisEnabled,另一个带有私有(private)setterexists。@protocolSomeProtocol@pr

ios - Swift - 带有 Objective-C 选择器 '*()' 的方法 '*' 与具有相同 Objective-C 选择器的父类(super class) '*' 的 'NSObject' 的 getter 冲突

自从将我的xcode更新到6.3.1后,我收到了这条错误消息。/Users/MNurdin/Documents/iOS/xxxxx/Models/Message.swift:46:10:Method'hash()'withObjective-Cselector'hash'conflictswithgetterfor'hash'fromsuperclass'NSObject'withthesameObjective-Cselector我的代码varhash_:UIntfunchash()->UInt{returnUInt(hash_);} 最佳答案

Swift - 在 getter 上返回自身属性并在 setter 上设置自身

无论如何要在getter中返回自身属性并在setter中设置自身?因为我只想在getter和setter中打印日志,仅此而已。例如我尝试做这样的事情:private(set)varinternetConnectionAvailable:Bool{get{logger.debug("verifyinginternetconnection")//herereturnitselfproperty}set{logger.debug("changinginternetconnection")//heresetitself}}如果我在getter上返回self.internetConnection

ios - 覆盖 UIImageView 的图像 getter/setter 方法

我将UIImageView子类化,以便每次设置图像属性时都会出现动画。以下是成功的:importUIKitclassAnimatedImageView:UIImageView{varimg:UIImage!{get{returnself.image}set{self.image=newValueUIView.animateWithDuration(0.5,delay:0.4,usingSpringWithDamping:0.2,initialSpringVelocity:5.0,options:.CurveEaseIn,animations:{_inself.transform=CGA

swift - 在 Swift 中,为什么分配给静态变量也会调用它的 getter

我知道在Swift中,静态变量是隐式惰性的:https://stackoverflow.com/a/34667272/1672161但我不清楚为什么会这样:protocolHatType{}classHat:HatType{init(){print("realhat")}}classMockHat:HatType{init(){print("mockhat")}}structHatInjector{staticvarhat:HatType=Hat()}HatInjector.hat=MockHat()//Output://realhat//mockhat我看到的是,对静态变量的赋值在某

ios - Swift 中的惰性属性等同于 Objective C 中的惰性 Init getter

Swift中的lazy属性是否等同于在ObjectiveC中使用延迟加载模式覆盖getter? 最佳答案 来自文档:Alazystoredpropertyisapropertywhoseinitialvalueisnotcalculateduntilthefirsttimeitisused.Youindicatealazystoredpropertybywritingthelazyattributebeforeitsdeclaration.所以,大多数情况下,是的。Youmustalwaysdeclarealazypropertya

arrays - nil 在 swift 中检查 getter 方法内部?

我的ViewController中有一个数组。只有当它为nil时才应该分配它,否则它应该返回现有值。等效于ObjectiveC:-(NSArray*)states{if(!_states){_states=//readfilesfromjsonandassignedtoarray}return_states;}我必须swift实现这一目标。我尝试使用存储的属性但无法实现这一点什么是实现这一目标的最佳方式 最佳答案 可以是这样的:classWhatever{private(set)var_states:[AnyObject]?vars