GCC Code Block Evaluation C Extension
Let's make this official: NSHipster's Objective-C trend of 2013 is code block evaluation assignment. Recommended by both Jim Kubicek and Maximilian Tagher (citing this blog post by Dominik Wagner), this trick does wonders to make code cleaner, safer, and more concise.
Behind the magic is a GCC C extension, which causes a code block to return a value if enclosed within brackets and parentheses.
Watch, as it cuts through this view controller code like butter!
self.searchBar = ({
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:({
CGRect frame = self.tableView.frame;
frame.size.height = 50.0f;
frame;
})];
searchBar.delegate = self;
searchBar;
});
This not only segregates configuration details into initialization, but the additional scope allows generic variable names like frame
, button
, and view
to be reused in subsequent initializations. No more loginButtonFrame = ... / signupButtonFrame = ...
!
If code craftsmanship is important to you, strongly consider making this standard practice in your work. It may look a bit weird at first, but this will very likely become common convention by the end of 2014.Co
转载自:http://nshipster.com/new-years-2014/