English 中文(简体)
目 录 代表级别
原标题:Objective-C -- Subclass of delegate in subclass

这是一种相当复杂的继承等级,与我一样(我试图简化事情,而不是说明我使用哪怕更复杂的具体情况): -

我要说的是,我创设了一个名为<代码>UIText Field的子类别,称为<代码>Text Field,这是我自己的习惯加强通用文本领域。 现在,为了提供这一强化功能,在<代码>init 的<代码> > 外地>代码/代码>方法中,我设定了<代码>super.delegate=自,从而使>上的所有代表方法都发送至Text Field。 <代码>Text Field 执行 议定书,并接受这些代表方法做一些有意义的事。

然而,反过来,我要这样作:Text Fieldown<>>> 代表。 因此,我设立了一个新的议定书,称为Text FieldDelegate (注:没有< UI>-prefix!) ,并注明<>Text Field an ivar <>code>id<TextDelegate> __weak delegation,有相应的财产,以便其他类别能够从>>/code>中获取代表方法。

我希望你仍然与我在一起,因为我迄今没有做过任何过于复杂的事情。 但我要说的是,现在我设立了另一个海关次级,即<代码>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 指定代表,但在Text< Field/code>上宣布一个名叫Ivar的代表,该代表大概是UIText Field 的财产称为代表!)

最佳回答

UIText Field delegation ivar的名称是:delegate,而不是代表。 因此,你不再在文本领域,而是在密码Text Field宣布。

至于你的继承问题。 我不相信目标会支持你们想要的东西。

你可能只得打上你的代表,而不是id和lt;Text Delegate> 。 然后,你可以推翻任命,确保代表的通过符合规定。 议定书。 然而,你将失去这里的编辑时间检查,只有经过时间的检查才能做到。 议定书

问题回答

,! 工作,并设法获得汇编时的警告。

简单明了。

@protocol Parentprotocol <NSObject>

@end

@interface SimpleParent : NSObject {
    id<Parentprotocol> obj;
}

@property (retain) id<Parentprotocol> obj;

@end

简单明了。

#import "简单明了。"

@implementation SimpleParent
@synthesize obj;

@end

PrivateChild.h

#import <Foundation/Foundation.h>
#import "简单明了。"

@protocol SimpleChildProtocol <Parentprotocol>


@end

@interface SimpleChild : NSObject

@property (assign) id<SimpleChildProtocol> obj;

@end

PrivateChild.m

#import "PrivateChild.h"

@implementation SimpleChild
@synthesize obj;

@end

这是一个非常令人困惑的问题,如果我错失了这个点,那么我会宽恕我,但似乎像你的三个不同的继承水平一样,每个代表都有不同的要求,因此每个代表都必须遵守不同的议定书,这样,作为不同名称的ivar,把每个级别代表搁置起来是一种解决办法吗?

例如,你的基类将拥有其<代码>delegate,你已决定将其分配给第一个继承子类。 它有自己的代表,称为level1delegate,下级代表another,称为level2delegate。 当然,如果该目标符合所有三项议定书,你可以确定其中三项目标。

基本上说,没有任何规定说代表必须被称为“gate”,这样就不去打断。





相关问题
Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

JSON with classes?

Is there a standardized way to store classes in JSON, and then converting them back into classes again from a string? For example, I might have an array of objects of type Questions. I d like to ...

Object-Oriented Perl constructor syntax and named parameters

I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...

Passing another class amongst instances

I was wondering what is the best practice re. passing (another class) amongst two instances of the same class (lets call this Primary ). So, essentially in the constructor for the first, i can ...

Where can I find object-oriented Perl tutorials? [closed]

A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...