这是一种相当复杂的继承等级,与我一样(我试图简化事情,而不是说明我使用哪怕更复杂的具体情况): -
我要说的是,我创设了一个名为<代码>UIText Field的子类别,称为<代码>Text Field,这是我自己的习惯加强通用文本领域。 现在,为了提供这一强化功能,在<代码>init 的<代码> > 外地>代码/代码>方法中,我设定了<代码>super.delegate=自,从而使Text Field
。 <代码>Text Field 执行
然而,反过来,我要这样作:Text Field
有own<>>> 代表。 因此,我设立了一个新的议定书,称为Text FieldDelegate
(注:没有< UI>
-prefix!) ,并注明<>Text Field an ivar <>code>id<TextDelegate> __weak delegation,有相应的财产,以便其他类别能够从
我希望你仍然与我在一起,因为我迄今没有做过任何过于复杂的事情。 但我要说的是,现在我设立了另一个海关次级,即<代码>Text Field,请打电话PasswordText Field
。 (在现实生活中,也许不需要建立一个子级,而只是为了执行密码功能,但可以假定,需要实施一些相当复杂的执行。)
让我也假设,我想要这样作:<代码> 密码Text Field(如Text Field
有代表财产)能够发出一套强化的代议方法。 例如,如果密码达到必要的复杂程度,则可能可以发送一种方法<代码>密码secure。 既然在常规的<代码>Text Field上发现了这种编号的行为,我就设立了一个新的议定书:PasswordText FieldDelegate <Text FieldDelegate>
,其中界定了新代表方法,用于PaswordText Field<>>>>>>
问题在于:我如何在<代码>中落实这一点。 密码Text Field? 无工作可做的事情:
<><>Inheritance
I cannot simply inherit the delegate from TextField
, because TextField
s delegate conforms only to TextFieldDelegate
and not PasswordTextFieldDelegate
, so I can t send methods like [delegate passwordIsSecure]
because TextFieldDelegate
has no such method.
www.un.org/Depts/DGACM/index_spanish.htm Overriding ivar
我可以试图在<条码>上宣布一var。 密码Text Field称作代表,但汇编者抱怨说,这是重复的声明,因为当然,在超级阶级中已经有一个叫Ivar的代表,因此,这要么是没有工作的。
Modifying the superclass
我可以回到<代码>Text Field的类别,并重新定义该代表,以实施<代码>Text FieldDelegateandPaswordText FieldDelegate
,但看来是幻影,并注明了Text Field
,可以发送。 密码Text FieldDelegate
方法,当然,这种方法可以 t!
我只字不提这一点,只是因为它似乎打破了该书中的每一条合理的编码规则。
简言之,必须采取某种方式,使一等子能够让自己代表超级阶级代表的副手,并且让大家坐到一起,但我可以把它说出来! 任何想法?
* 作为一个次要问题,我不理解编辑在<代码>上抱怨的原因。 密码Text Field 宣布“复制”ivar 指定代表,但在UIText Field
的财产称为代表!)