Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7055507
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T03:45:26+00:00 2026-05-28T03:45:26+00:00

This is a fairly complicated inheritance hierarchy, so bear with me (I’ve tried to

  • 0

This is a fairly complicated inheritance hierarchy, so bear with me (I’ve tried to simplify things rather than state the exact case I am using which is even more complex):-

Let’s say I create a subclass of UITextField called TextField which is my own custom enhanced general-purpose textfield. Now, in order to provide this enhanced functionality, in the init method of TextField, I set super.delegate = self so that all the delegate methods from UITextField are sent to TextField. TextField implements the UITextFieldDelegate protocol and receives those delegate methods to do something interesting.

However, in turn, I want to make it so that TextField has it’s own delegate. So I create a new protocol called TextFieldDelegate (note the lack of UI-prefix!) and give TextField an ivar id<TextFieldDelegate> __weak delegate with corresponding property so that other classes can receive delegate methods from TextField.

I hope you’re still with me, because I haven’t done anything too complex so far. But let’s say that now, I create another custom subclass of TextField, let’s call it PasswordTextField (in real life, one probably wouldn’t need to create a subclass just to implement a password functionality, but let’s assume that there is some fairly sophisticated implementation that would require this).

Let’s also assume that I want to make it so that PasswordTextField (which like TextField has a delegate property) is able to send an enhanced set of delegate methods. For example, maybe it can send a method passwordIsSecure which is sent once a password has reached a required level of complexity. Now since this behaviour that wouldn’t be found in the regular TextField, I create a new protocol: PasswordTextFieldDelegate <TextFieldDelegate> which defines the new delegate methods for PasswordTextField and inherits all of the delegate methods sent by TextField.

The problem is: how do I do implement this in PasswordTextField? Things that don’t work:

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.

Overriding ivar

I could try declaring an ivar in PasswordTextField called delegate, but the compiler complains that this is a duplicate declaration, because of course there is already an ivar called delegate in the superclass, so this doesn’t work either*.

Modifying the superclass

I could go back to the TextField class and redefine the delegate to implement both TextFieldDelegate and PasswordTextFieldDelegate, but this seems messy and tells TextField that it can send PasswordTextFieldDelegate methods, which of course, it can’t!

I haven’t tried this one, simply because it seems to break every sensible coding rule in the book.

In summary, there must be some way of doing this such that a subclass of a class can have it’s own delegate that’s a sub-delegate of the superclass’s delegate and for all of this to fit together nicely, but I just can’t figure it out! Any ideas?

(* As a side issue, I don’t understand why the compiler complains when PasswordTextField declares a “duplicate” ivar named delegate, but doesn’t complain when TextField declares an ivar named delegate which is presumably a duplicate of UITextField‘s property called delegate!)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T03:45:26+00:00Added an answer on May 28, 2026 at 3:45 am

    UITextField delegate ivar is named _delegate, not delegate. Hence why you get away with declaring it again in TextField, but not in PasswordTextField.

    As for your delegate inheritance problem. I’m not sure ObjectiveC supports what you want.

    You may just have to type your delegate ‘id’, instead of ‘id<TextFieldDelegate>’. Then you could override setDelegate and ensure that the delegate passed in conformsToProtocol. However, you would lose your compile time checks here and only have the runtime check of conformsToProtocol

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know this probably is a fairly complicated question but... heres my case: I
I have a fairly complicated hierarchy of types and sometimes run into hard-to-debug type
this is my first posted question. I have a fairly complicated OQL query which
I'm trying to use this fairly standard line of code in my app: [[UIApplication
Say I am storing addresses in a DB table, in this fairly common break
This is fairly simple but I cant work it out. I'm building a wordpress
This is fairly simple in Windows, but a little tricky in Linux. I am
I know this is fairly subjective, but I'm diving into testing and learning about
I guess this is fairly simple for you but i cant wrap my head
I'm sure this is fairly simple, however I have a major mental block on

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.