OC类属性了解一下-class作为属性修饰符

OC类属性了解一下-class作为属性修饰符,第1张

先看下它在Xcode8 release版本中官方给出的解释:

就解释来看,似乎Objective-C获得这一功能是提高与Swift的互通性。 向Objective-C添加 class 属性映射到Swift中使用类变量。不过我们可以在OC中使用这个功能,更方便愉快的coding。

我们新建一个TestCar类,同时有一个属性 desc

以便于在其他类访问我们在.h文件里面声明一个属性

当我们声明一个class属性的时候,编译器会发出警告!这也就是前面说的They are never synthesized.

这两个属性永远不会synthesized,因此如果我们不显式的添加setter和getter方法,XCode就会提示警告信息使用@dynamic或者是提供setter和getter方法; 注意在getter方法前面使用 + 让其成为一个类的方法

接下来我们简单实现一下set 和 get方法,以便在其他地方调用

接下来就可以调用了,可以使用类名上的普通点语法访问类属性

这里就可以正常输出内容了

同时也需要注意的是,由于这是Xcode 8中的LLVM编译器的一项功能,因此它可以在低于iOS 10的环境下使用。

假如一个类里面都是类方法,或者想在其他地方访问一个类里面的信息,并且这个类里面还有一些属性的话,那么可以使用class修饰生成类属性,这样调用的时候可以直接使用类名调用,不用再生成一个该类的实例来调用了,使用类属性会更方便一点。

当然想使用这个功能你要付出的就是自己生成set和get方法。想必这不是什么难题!

属性用class修饰同时你也可以修饰为readonly只读,它并不会影响其他功能。

Class可以通过extend关键字实现继承。super关键字表示父类的构造函数,用来新建父类的this对象。

子类须在constructor方法中调用super方法,这样才能得到父类的this,否则会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。

调用函数使用的例子

class A {

constructor() {

console.log(new.target.name)

}

}

class B extends A {

constructor() {

super()

}

}

new A() // A

new B() // B

扩展资料

实例属性的新写法

class IncreasingCounter {

constructor()

{

this._count = 0

}

_count = 0//_count定义在类的最顶层与上面的constructor()写法等价

get value() {

console.log('Getting the current value!')

return this._count

}

increment()

{

this._count++

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11558834.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存