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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T16:49:06+00:00 2026-06-14T16:49:06+00:00

I’m was reading a tutorial about coreImage in iOS 6. In that tutorial I

  • 0

I’m was reading a tutorial about coreImage in iOS 6.
In that tutorial I found something like:

@implementation ViewController {
    CIContext *context;
    CIFilter *filter;
    CIImage *beginImage;
    UIImageOrientation orientation;
}
//Some methods
@end

The variables are declared in the .m file in a parenthesis after the @implementation statement. I’m seeing these kind of variable declaration first time.

Is there any difference between the above variable declaration and the following code

@implementation ViewController

    CIContext *context;
    CIFilter *filter;
    CIImage *beginImage;
    UIImageOrientation orientation;

//Some methods

@end
  • 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-14T16:49:07+00:00Added an answer on June 14, 2026 at 4:49 pm

    There is a HUGE difference.

    Variables inside brackets directly after the @interface or @implementation are instance variables. These are variables associated with each instance of your class, and thus accessible anywhere in your instance methods.

    If you don’t put the brackets, you declare global variables. Any variable declared outside of any bracket block will be a global variable, whether these variables are before or after the @implementation directive. And global variables are evil and need to be avoided at all costs (you can declare global constants, but avoid global variables), especially because they are not thread-safe (and may thus generate bugs that are a mess to debug).


    In fact, historically (in first versions of Objective-C and the compilers), you were only able to declare instance variables in brackets after your @interface in your .h file.

    // .h
    @interface YourClass : ParentClass
    {
        // Declare instance variables here
        int ivar1;
    }
    // declare instance and class methods here, as well as properties (which are nothing more than getter/setter instance methods)
    -(void)printIVar;
    @end
    
    // .m
    int someGlobalVariable; // Global variable (bad idea!!)
    
    @implementation YourClass
    
    int someOtherGlobalVariable; // Still a bad idea
    -(void)printIVar
    {
        NSLog(@"ivar = %d", ivar1); // you can access ivar1 because it is an instance variable
        // Each instance of YourClass (created using [[YourClass alloc] init] will have its own value for ivar1
    }
    

    Only modern compilers let you declare instance variables (still in brackets) also inside either your class extension (@interface YourClass () in your .m implementation file) or in your @implementation, in addition to the possibility to declare them after the @interface in your .h. The benefits being to hide those instance variables from external users of your classes, by declaring them in the .m file and not in the .h file anymore, because users of your class don’t need to be aware of the internal coding details of your class, but only needs to know the public API.


    One final advice: instead of using instance variables, Apple more and more recommends to use @property directly, and let the compiler (explicitely using the @synthesize directive, or implicity with modern LLVM compilers) generate the internal backing variable. So that at the end you generally won’t need to declare instance variables at all, and thus omit the empty { } after the @interface directive:

    // .h
    @interface YourClass : ParentClass
    
    // Declare methods and properties here
    @property(nonatomic, assign) int prop1;
    -(void)printProp;
    @end
    
    // .m
    @implementation YourClass
    // @synthesize prop1; // That's even not needed with modern LLVM compiler
    -(void)printProp
    {
        NSLog(@"ivar = %d", self.prop1);
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am reading a book about Javascript and jQuery and using one of the
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
I've got a string that has curly quotes in it. I'd like to replace
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
For some reason, after submitting a string like this Jack’s Spindle from a text
I have a small JavaScript validation script that validates inputs based on Regex. I
I have a French site that I want to parse, but am running into
I am doing a simple coin flipping experiment for class that involves flipping a

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.