小编Str*_*ter的帖子

带有自定义属性getter的KVO通知

我想在iOS editable上听一下这个属性UITextView.在标题中UITextView.h,editable属性定义为:

@property(nonatomic,getter=isEditable) BOOL editable;
Run Code Online (Sandbox Code Playgroud)

要收听KVO通知,我正在使用addObserver模式,我将keyPath传递给NSStringFromSelector(@selector(isEditable)),因此如果我使用的是未定义的选择器,Xcode会发出警告.注册isEditable密钥路径时没有任何障碍,但是在更改editable文本视图上的属性后,我从未收到过属性更改的通知.我正在注册观察员:

[self.textView addObserver:self
                forKeyPath:NSStringFromSelector(@selector(isEditable))
                   options:NSKeyValueObservingOptionNew
                   context:KVOTestingTestsContext];
Run Code Online (Sandbox Code Playgroud)

但是,如果我改为使用密钥路径NSStringFromSelector(@selector(editable)),我收到KVO通知,但Xcode会生成警告,表明我使用了未声明的选择器'editable'.

我想知道是否有一个更好的模式然后我应该使用如果在应该使用自定义getter的情况下发生故障.或者这是Xcode/clang中的错误?

objective-c key-value-observing ios

11
推荐指数
1
解决办法
2108
查看次数

使用ParentClass.method(self,*args,**kwargs)或super(MyClass,self).method(*args,**kwargs)

当一个类有一个继承自单个类的类时,调用父方法的首选方法是什么?我知道有两种方法可以调用父方法.

选项1:

ParentClass.method(self, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

选项2:

super(MyClass, self).method(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

在处理多重继承时,选项1似乎确实很有意义; 我们想要专门调用某个类的方法.但是在处理单继承时,无论哪种方式都有效,但选项1可能更加安全.但有什么(比如PEP)说什么时候使用哪种风格?

python syntax

4
推荐指数
1
解决办法
1038
查看次数

标签 统计

ios ×1

key-value-observing ×1

objective-c ×1

python ×1

syntax ×1