当前位置: 首页 > news >正文

天津市城乡和住房建设厅网站巨量引擎广告投放平台官网

天津市城乡和住房建设厅网站,巨量引擎广告投放平台官网,网站的制作流程,网站接入商排名在 Objective-C 和 Swift 中,static 关键字都用于定义类型级别的成员,但它们的用法和行为在两个语言中有所不同。让我们来详细对比一下 Objective-C 和 Swift 中 static 的使用方式和特性。 1. Objective-C 中的 static 在 Objective-C 中,…

在 Objective-C 和 Swift 中,static 关键字都用于定义类型级别的成员,但它们的用法和行为在两个语言中有所不同。让我们来详细对比一下 Objective-C 和 Swift 中 static 的使用方式和特性。

1. Objective-C 中的 static

在 Objective-C 中,static 关键字有几种不同的用途:

a. 静态变量(Static Variables)

在 Objective-C 中,static 可以用于声明在某个文件或函数内作用域的静态变量。静态变量只会被初始化一次,其值在整个程序的生命周期内保持不变。常见的用法是在函数内部声明一个静态变量,使其在多次调用时保持值。

void incrementCounter() {static int counter = 0; // 静态变量counter++;NSLog(@"Counter: %d", counter);
}incrementCounter(); // 输出:Counter: 1
incrementCounter(); // 输出:Counter: 2

在上面的代码中,counter 是一个静态变量,它在 incrementCounter 函数的多次调用中保持累加效果。

b. 静态全局变量(File Scope)

在文件级别使用 static 声明的变量或函数只能在当前文件中访问,无法被其他文件访问。它用于限制变量和函数的作用域,防止命名冲突。

static NSString *globalString = @"Hello, World!";

在这里,globalString 只能在定义它的文件中访问,其他文件无法直接引用。

c. 类级别常量

Objective-C 中没有 static 属性的概念。为了定义类级别的常量,通常使用类方法来提供访问,例如:

@interface MyClass : NSObject
+ (NSString *)classLevelConstant;
@end@implementation MyClass
+ (NSString *)classLevelConstant {return @"Class Level Constant";
}
@end

2. Swift 中的 static

在 Swift 中,static 用于声明类、结构体和枚举的类型属性类型方法。它使得属性或方法与类型本身关联,而不是与类型的具体实例关联。

a. 类型属性 type property(Static Properties)

在 Swift 中,static 用于定义与类型本身关联的属性,可以在类、结构体和枚举中使用。与 Objective-C 不同的是,Swift 允许在结构体和枚举中使用 static 定义类型属性和类型方法。

struct MathConstants {static let pi = 3.14159
}print(MathConstants.pi)  // 输出: 3.14159

在这个示例中,pi 是一个类型属性,属于 MathConstants 类型,而不是某个具体的实例。

b. 类型方法(Static Methods)

Swift 中的 static 还用于声明类型方法,可以直接通过类型名调用。结构体和枚举中的静态方法使用 static 声明,类中的静态方法也可以使用 class 关键字,这样子类可以重写该方法。

struct Counter {static var count = 0static func increment() {count += 1}
}Counter.increment()
print(Counter.count) // 输出: 1

3. static 与多态性和重写的区别

在 Swift 中,static 方法和属性不能被重写,也不支持多态。它们始终与声明它们的类型绑定。在类中,Swift 提供了 class 关键字,使得类型方法可以在子类中被重写。

class Animal {static func sound() {print("Some generic animal sound")}class func overrideableSound() {print("Some generic animal sound")}
}class Dog: Animal {// 不能重写 static 方法// 重写 class 方法override class func overrideableSound() {print("Woof!")}
}Animal.sound()               // 输出: Some generic animal sound
Dog.sound()                  // 输出: Some generic animal soundAnimal.overrideableSound()   // 输出: Some generic animal sound
Dog.overrideableSound()      // 输出: Woof!

在上面的代码中,sound() 方法使用了 static,无法在子类中被重写;而 overrideableSound() 使用 class,因此可以被子类 Dog 重写。

Objective-C 和 Swift 中 static 的对比

特性Objective-CSwift
静态变量作用域可以用于限制变量的文件作用域没有文件级别的 static,但可以用全局变量
静态变量和方法用于函数中的静态变量和限制文件作用域的变量可用于类、结构体和枚举的类型属性和方法
类型属性支持没有内建类型属性;通常用类方法实现支持 staticclass 类型属性
重写和多态性无法重写静态类方法static 方法不能重写,class 可以被重写
用法场景函数内部持久性变量、文件级别的常量和函数类型级别的常量、属性,和不可重写的类型方法

总结

  • Objective-C 中的 static:用于创建函数内持久变量、文件级别变量和静态类常量,但无法用于类型属性和类型方法。
  • Swift 中的 static:可以用于类、结构体和枚举的类型属性和方法,属于类型而非实例,且不可重写。Swift 还提供了 class,用于定义可被子类重写的类型方法,使其适合多态性的使用。

在 Swift 中的 static 用法更为广泛和灵活,适用于多种类型,并且可以更直接地支持类型级别的成员。

http://www.yidumall.com/news/38690.html

相关文章:

  • 洋洋点建站网络商城应该如何推广
  • 最低的成本做网站网站怎么被百度收录
  • 网站功能提升权限网站底部友情链接
  • 帝国网站管理系统教程短视频推广app
  • 手机网站切图网站一年了百度不收录
  • 做软件赚钱还是做网站赚钱电商关键词seo排名
  • 前端是做网站吗关键词优化策略有哪些
  • 网站建设 比选百度seo软件优化
  • 网站web前端技术公司域名注册步骤
  • 菏泽网站获客网站建设公司西安百度搜索排名
  • 凡科网站建设教程百度seo官方网站
  • 榆林做网站百度推广登录入口官网网
  • 佛山网站建设佛山网络推广建站软件可以不通过网络建设吗
  • 建什么网站赚钱天天seo站长工具
  • 网站导航栏设计代码广东短视频seo搜索哪家好
  • 宁波外贸网站建设开发网站多少钱
  • 企业网站开发常用的字体微软优化大师
  • 现在建网站做淘宝联盟推广能赚钱吗长沙百度seo代理
  • wordpress时间中文版整站优化 快速排名
  • 汕头澄海玩具批发市场批量优化网站软件
  • 网络营销策划方案的编写方法及内容seo运营是做什么的
  • 网上的毕业设计代做网站靠谱吗如何联系百度平台客服
  • 公司该建哪种网站如何做一个自己的网站呢
  • 百度联盟的网站怎么做可以免费领取会员的软件
  • 网站备案号在哪里seo中文全称是什么
  • 合肥网站建设王道下拉??免费自己制作网站
  • 西安注册公司费用站长工具seo综合查询可以访问
  • 做网站最专业大数据平台
  • 网站建设大纲西安建站推广
  • 大型电商平台有哪些网站优化关键词排名公司