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

  • Home
  • SEARCH
  • 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 6155247
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T20:24:15+00:00 2026-05-23T20:24:15+00:00

In the following example, what are the possible problems that can occur. id c

  • 0

In the following example, what are the possible problems that can occur.

id c = [Person alloc];
[c init];
  • 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-23T20:24:16+00:00Added an answer on May 23, 2026 at 8:24 pm

    The main problem with the code in your example is that in some cases, the -init method returns an object that’s different from the one that you created with +alloc. If that happened, then your code would be incorrect because you’re not assigning the result of [c init] to c, and you’d end up working with the wrong object (and one that’s not properly initialized at that). This is why the standard idiom is to always combine +alloc and -init on the same line:

    id c = [[Person alloc] init];

    Now, you may have written the Person class and have first hand knowledge that -init always returns the same object, but I shouldn’t have to be intimately familiar with the inner workings of Person to read your code and have a sense of whether it’s correct or not. Your code is “better” in the sense that anyone can tell that it’s doing the right thing if you follow the usual convention.

    I don’t think it’s horrible to declare c as type id, but it does seem silly in this case. You know that c will be of type Person*, so why declare it as id and throw away useful information that the compiler can use to help you write better code? If there’s a good reason to use id, that’s fine, but if you can be more specific about the type you should do so.

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

Sidebar

Related Questions

Is it possible to allocate locally-scoped memory in assembly? For example, consider the following
Example: Suppose in the following example I want to match strings that do not
In the following example should I expect that values.size() will be called every time
I have the following problem. I have a set of elements that I can
I need to build ONE regular expression that can detect ALL the following strings
Have the following problem example . The problem is that because of the border
Consider following example : public class SomeBusinessLayerService : DataService<MyEntityContainer> { [WebInvoke] void DoSomething(string someParam)
Given the following example, why do I have to explicitly use the statement b->A::DoSomething()
Let me use the following example to explain my question: public string ExampleFunction(string Variable)
I was trying the following example, but with external URLs: Using WebViews The example

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.