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 8808413
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T02:37:02+00:00 2026-06-14T02:37:02+00:00

I want to force user to use my own init method (for example -(id)initWithString:(NSString*)foo;

  • 0

I want to force user to use my own init method (for example -(id)initWithString:(NSString*)foo;) and not the basic [[myObject alloc]init];.

how can I do that?

  • 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-06-14T02:37:03+00:00Added an answer on June 14, 2026 at 2:37 am

    The accepted answer is incorrect – you CAN do this, and it’s very easy, you just have to be a bit explicit. Here’s an example:

    You have a class named “DontAllowInit” which you want to prevent people init’ing:

    @implementation DontAllowInit
    
    - (id)init
    {
        if( [self class] == [DontAllowInit class])
        {
            NSAssert(false, @"You cannot init this class directly. Instead, use a subclass e.g. AcceptableSubclass");
    
            self = nil; // as per @uranusjr's answer, should assign to self before returning
        }
        else
            self = [super init];
    
        return nil;
    }
    

    Explanation:

    1. When you call [super init], the class that was alloc’d was the SUBCLASS.
    2. “self” is the instance – i.e. the thing that was init’d
    3. “[self class]” is the class that was instantiated – which will be SUBCLASS when the SUBCLASS is calling [super init], or will be the SUPERCLASS when the SUPERCLASS is being called with plain [[SuperClass alloc] init]
    4. So, when the superclass receives an “init” call, it just needs to check whether the alloc’d class is the same as its own class

    Works perfectly. NB: I don’t recommend this technique for “normal apps” because usually you INSTEAD want to use a Protocol.

    HOWEVER … when writing Libraries … this technique is VERY valuable: you frequently want to “save (other developers) from themselves”, and its easy to NSAssert and tell them “Oops! you tried to alloc/init the wrong class! Try class X instead…”.

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

Sidebar

Related Questions

I want to force user to download images. Not open in browser. It is
I want anonymous user can view projects' status and logs but can not start/stop/force
I want to use a regexp to force a user to correctly format a
When users go on my website, I want to force them to use Internet
I want to use autocomplete (jquery or .net) with force a choice so that
i want to force use to fill Settings Page in two cases 1) when
Is there a way to force or prompt a user to use the windows
A lot of frameworks out there decided to use this approach: force the user
I want to force a repaint during a Javascript loop. For example: var s
I want to use this page to determine if the user has either updated

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.