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

The Archive Base Latest Questions

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

What are the performance gains of a compiler (specifically compilers that Xcode uses) not

  • 0

What are the performance gains of a compiler (specifically compilers that Xcode uses) not treating every variable as a __block variable? I’d imagine there has to be something, I doubt that during the conception of __block variables it was decided that

 __block SelfClass * blockSelf = self;

is nice and convenient syntax.

  • 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-26T11:45:27+00:00Added an answer on May 26, 2026 at 11:45 am

    The goal of blocks was to make it as automatic and transparent as possible to use blocks with minimal syntax and have them “just work”.

    Non-__block variables, as the default, are much more in line with the notion of “closures” that blocks represent. A block snapshots the state of all variables referenced within the block at the moment execution passes over the block declaration. This encompasses both copying of memory/state and retaining any Objective-C object references captured in the block.

    __block effectively breaks the encapsulation of state within the block. Very useful, but requires manual management of object references on the part of the programmer.

    I.e. non-__block variables “just work” more often the __block variables and, thus, the default behavior was to gravitate to “just works”.

    In practice, the cost of capturing the state within a block is typically minimal. Measurable impact on app performance is typically rare and often indicates an architectural problem of a more profound nature.


    If by:

     __block SelfClass * blockSelf = self;
    

    Are you are referring to the cross-product of Blocks and ARC? Yes, that is a bit unfortunate. But the compiler is also warning about a very real issue that you need to be aware of. However, a cleaner workaround would be obviously preferable.

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

Sidebar

Related Questions

What are the performance gains/losses between hash joins and merge joins, specifically in Oracle
Are there any performance gains in using stored procedures for simple SQL inserts into
Is there any performance gains or necessity in unbinding an element's event(s) before deleting
By default for Windows at least, Nagling is on. There are potential performance gains
Is there any performance gain using a CTE over a derived table?
Is there a performance gain or best practice when it comes to using unique,
Strange performance outcome, I have a LINQ to SQL query which uses several let
Will a static final variable of a primitive or String type, that is assigned
I think my question is, is there anyway to emulate the behaviour that we'll
I have no doubt that for client applications, AsParallel() will bring some out-of-the-box performance

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.