全局變量是任何 函數,方法,封閉件,或類型上下文之外定義的變量「的夫特編程指南」在swift中,它是一個全局變量還是屬性?
因此,這是一個問題:。
class Dog {
var name: String?
func run(){
}
}
name是一個全局變量還是屬性?
@implementation Dog{
NSString *name;
- (void)run{
}
}
name是一個全局變量還是屬性?
全局變量是任何 函數,方法,封閉件,或類型上下文之外定義的變量「的夫特編程指南」在swift中,它是一個全局變量還是屬性?
因此,這是一個問題:。
class Dog {
var name: String?
func run(){
}
}
name是一個全局變量還是屬性?
@implementation Dog{
NSString *name;
- (void)run{
}
}
name是一個全局變量還是屬性?
由於類是一種類型,name
是Swift示例中的一個屬性。
在Objective-C示例中,name
是一個全局變量,因爲屬性在@interface
範圍內定義,並且需要@property
聲明。 (實例變量不需要任何聲明,但他們必須是@interface
或@implementation
範圍內的塊內。)
name
是一種情境,class Dog
裏面,所以它是Dog
實例的屬性。
第二個例子類似於Objective-C(它絕對不是Swift),但它是不正確的ObjC語法。目前還不清楚實際的代碼是什麼。如果你的意思是:
@implementation Dog
NSString *name;
- (void)run {
}
@end
然後name
是全球性的,但不應該這樣寫。這很混亂。 name
聲明應該超出@implementation
區塊以避免混淆。如果,另一方面,你的意思是寫:
@implementation Dog {
NSString *name;
}
- (void)run {
}
@end
然後name
是私有的實例變量(這是不一樣的事,作爲一個屬性)。這在現代的ObjC中是一種不尋常的語法,通常應該避免。
**感謝**,你說得對,第二個例子是Objective-C。我犯了一個錯誤。 '''@implementation ClassA {(instancetype)shareTools { return [[self alloc] init]; } static Tools * _instance; static dispatch_once_t onceToken; dispatch_once(&onceToken,^ {Instance = [super allocWithZone:zone]; }); return _instance; } @ end'''' 是** static Tools * _instance **是全局的嗎? – user5430804
非常感謝,@ Jesper – user5430804