Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective-C is @synthesize required or optional?

sorry I'm a newbie iOS developer, recently I've briefly heard that @synthesize is now @synthesize in a certain version of Xcode and that the compiler will auto synthesize and properties and assign _ to private variables.

I've tested this:

with out @synthesize, you can access properties and private field using

self.property_name = something; _property_name = something; //(used in getter and setters) 

with @synthesize property_name, you can access properties and private field using

self.property_name = something; property_name = something; 

My question is do we really need @synthesize anymore? or there is a bigger story I'm missing?

like image 409
Charlie Wu Avatar asked Mar 25 '13 01:03

Charlie Wu


People also ask

What is @synthesize in Objective-C?

Xcode will auto synthesise an iVar as if you had written... @synthesize name = _name; This means you can access the property with... self.name; // or _name; Either will work but only self.name actually uses the accessor methods.

What is @dynamic in Objective-C?

@objc means you want your Swift code (class, method, property, etc.) to be visible from Objective-C. dynamic means you want to use Objective-C dynamic dispatch.

What is Ivar Objective-C?

Objective-C allows you to set four levels of scope for an instance variable as follows: @private - accessible only within the class that declares it. @protected - accessible within the class that declares it and all subclasses. This is the default.

What is a property in Objective-C?

Objective-C properties offer a way to define the information that a class is intended to encapsulate. As you saw in Properties Control Access to an Object's Values, property declarations are included in the interface for a class, like this: @interface XYZPerson : NSObject.


1 Answers

No we don't need to do that as of Xcode 4.4, which added a feature called Default Synthesis Of Properties.

Simply put, it generates this automatically:

@synthesize name = _name; 
like image 94
James Chen Avatar answered Sep 19 '22 09:09

James Chen