不能把readonly属性改为可读写。
5 个解决方案
#1
问题描述:.h文件中定义了一个readonly属性,但是并未声明构造器实例方法,只有一个类方法
又因为类方法不能直接为readonly属性赋值,所以问了这个问题。
实际我忽视了几个简单问题:1.类方法不可以使用自身属性和实例方法,但是可以使用self。 2.readonly属性可以在构造器函数中初始化,(也理解为什么时候需要readonly属性了,只希望初始化一次,或者不希望随便更改,其实在.m文件的实例方法中可以更改,只是不能在外面通过对象的属性直接更改而已 )。
代码参考:
又因为类方法不能直接为readonly属性赋值,所以问了这个问题。
实际我忽视了几个简单问题:1.类方法不可以使用自身属性和实例方法,但是可以使用self。 2.readonly属性可以在构造器函数中初始化,(也理解为什么时候需要readonly属性了,只希望初始化一次,或者不希望随便更改,其实在.m文件的实例方法中可以更改,只是不能在外面通过对象的属性直接更改而已 )。
代码参考:
//解决问题,怎么通过类方法初始化一个readonly属性?
//头文件中并未声明这个方法,只能在里面使用。
//这个方法的作用是为了给下面一个类方法的使用。(因为在类方法中无法使用属性和实例方法,但是可以使用self)
- (instancetype)initWithButtonType:(UIButtonType)buttonType {
self = [super init];
_buttonType = buttonType;
return self;
}
+ (instancetype)buttonWithType:(UIButtonType)buttonType{
//这里相当于生成一个对象
return [[self alloc] initWithButtonType:buttonType];
}
#3
那么第二个问题来了?
如果是继承父类含有readonly属性,怎么修改了??????
如果是继承父类含有readonly属性,怎么修改了??????
#4
kvc就可以改呀
#5
你既然设置为只读显然不想要赋值,初始的话的你可以在类的内部定义一个常量(如果会变化就用变量),初始化的时候给这个常量赋值,然后通过get方法返会给你的这个属性.
#1
问题描述:.h文件中定义了一个readonly属性,但是并未声明构造器实例方法,只有一个类方法
又因为类方法不能直接为readonly属性赋值,所以问了这个问题。
实际我忽视了几个简单问题:1.类方法不可以使用自身属性和实例方法,但是可以使用self。 2.readonly属性可以在构造器函数中初始化,(也理解为什么时候需要readonly属性了,只希望初始化一次,或者不希望随便更改,其实在.m文件的实例方法中可以更改,只是不能在外面通过对象的属性直接更改而已 )。
代码参考:
又因为类方法不能直接为readonly属性赋值,所以问了这个问题。
实际我忽视了几个简单问题:1.类方法不可以使用自身属性和实例方法,但是可以使用self。 2.readonly属性可以在构造器函数中初始化,(也理解为什么时候需要readonly属性了,只希望初始化一次,或者不希望随便更改,其实在.m文件的实例方法中可以更改,只是不能在外面通过对象的属性直接更改而已 )。
代码参考:
//解决问题,怎么通过类方法初始化一个readonly属性?
//头文件中并未声明这个方法,只能在里面使用。
//这个方法的作用是为了给下面一个类方法的使用。(因为在类方法中无法使用属性和实例方法,但是可以使用self)
- (instancetype)initWithButtonType:(UIButtonType)buttonType {
self = [super init];
_buttonType = buttonType;
return self;
}
+ (instancetype)buttonWithType:(UIButtonType)buttonType{
//这里相当于生成一个对象
return [[self alloc] initWithButtonType:buttonType];
}
#2
另外这篇博客([
http://www.jianshu.com/p/1ffa6414008e)有解决修改只读属性的办法,但是我试了不行,好像是ARC不允许怎么滴。
#3
那么第二个问题来了?
如果是继承父类含有readonly属性,怎么修改了??????
如果是继承父类含有readonly属性,怎么修改了??????
#4
kvc就可以改呀
#5
你既然设置为只读显然不想要赋值,初始的话的你可以在类的内部定义一个常量(如果会变化就用变量),初始化的时候给这个常量赋值,然后通过get方法返会给你的这个属性.