我有一个class
,看起来像这样:
class A {
var aString = ""
static var staticString = ""
}
如果创建instance
中的A
,则无法访问static
property
:
var a = A()
a.staticString = "THIS GIVES AN ERROR"
但是,如果我直接创建一个instance
static
到variable
var a = A.staticString
a = "THIS WORKS"
的话,
A.staticString = "hello"
我了解静态变量的方式是,您只能像这样instances
直接访问它们。但这似乎并非如此。
(对我而言)更令人困惑的是,我可以创建多个static
并使用各自独立的值;那就是值不会保留var a = A.staticString
a = "AAA"
var b = A.staticString
b = "BBB"
print(a) //prints AAA
print(b) //prints BBB
:
static
不是b = "BBB"
变量应该保持静态?在我的脑海中,a和b都应打印BBB,因为singleton
应该覆盖了为其分配的第一个值。
使用class A {
static let shared = A()
var aString = ""
static var staticString = ""
}
会使我感到更加困惑,这确实给了我期望的结果:
let instance1 = A.shared
instance1.aString = "A String"
let instance2 = A.shared
instance2.aString = "Another String"
print(instance1.aString, instance2.aString) //Both print "Another String"
let numPagina = 2
jQuery(document).ready(function ($) {
$.get("/paginacao-ajax/page/"+numPagina+"/", function(html){ $("#contentAreaAppend").html(html);});
});
function carregarMaisPaginas(){
jQuery(document).ready(function ($) {
$("#contentAreaAppend").html('<div class="carregando"> <div class="loader loader--style2" title="1"> <svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="40px" height="40px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve"> <path fill="#2962ff" d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z"> <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatCount="indefinite"/> </path> </svg> </div><p>Carregando</p></div>');
$('html,body').animate({
scrollTop: $("#contentAreaAppend").offset().top - 200
}, 'slow');
numPagina++;
$.get("/paginacao-ajax/page/"+numPagina+"/", function(html){ $("#contentAreaAppend").html(html);});
});
}
某个善良的灵魂能为我清除一切吗?
答案 0 :(得分:1)
Swift中的static
关键字并不意味着该属性是不可变的/恒定的(与基于C的语言不同)。 static
表示该属性是 type属性,而不是 instance属性,表示该属性是该类型本身的属性,在所有实例之间共享,而不是每个实例的属性。有关更多信息,请阅读Swift语言指南的Type Properties部分。
常量/不变属性由let
声明,而可变属性由var
声明。
您可以使用类型名称(在您的情况下为A
)来设置和获取静态变量。
A.staticString = "new"
A.staticString // "new"
如果创建该类型的实例,则可以使用type(of:)
来获取元类型(A
),该元类型可用于访问静态属性
let a = A()
type(of: a).staticString // "new"
let anotherA = A()
type(of: anotherA).staticString // "new"