English 中文(简体)
目标-C @property and @synthesize Best practice
原标题:Objective-C @property and @synthesize best practice

因此,奥杰奇-C和I m现在刚刚学会使用<条码>@property和<条码>@synthesize,用于变量,我当时正在问,我如何利用变量。 我是否应该通过<条码>[自发]或<条码>自行查阅。 这表明了我对法典的质疑:

@property (nonatomic, strong) UILabel *lbl;
...
@synthesize lbl = _lbl;

-(void) doStuff
{
   // How should I acces label?
   _lbl.text = @"A";
   [self lbl].text = @"B";
   self.lbl.text = @"C";
}
最佳回答

There is no difference here :

UILabel * l = [self lbl];  // ==   UILablel *l = self.lbl;
[self setLbl:l];          //  ==   self.lbl = l;

但是,你们的样本有不同之处:

_lbl.text = @"A";  

That last one is not good because you are accessing the iVar directly bypassing your @property, which often don t make sense to do if you have declare it as @property.
In your case you are changing a property on your iVar, so there is no harm, but if you would do this :

_lbl = [[[UILabel alloc] initWithFrame:aRect] autorelease];

that would cause you a big problem, because you would have bypass the "setter". A strong setter would have retain that object, but now it s retain by no one, it will go away and you will have a bad pointer, that can make your application crash.

问题回答

暂无回答




相关问题
Asynchronous request to the server from background thread

I ve got the problem when I tried to do asynchronous requests to server from background thread. I ve never got results of those requests. Simple example which shows the problem: @protocol ...

objective-c: Calling a void function from another controller

i have a void, like -(void) doSomething in a specific controller. i can call it in this controller via [self doSomething], but i don t know how to call this void from another .m file. I want to call ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

NSUndoManager and runModalForWindow:

I have a simple Core Data app which displays a list of entities in the main window. To create or add new entities, I use a second modal window with a separate managed object context so changes can be ...

NSMutableArray values becoming "invalid"

I m trying to show a database information in a tableview and then the detailed information in a view my problem is as follow: I created a NSMutableArray: NSMutableArray *myArray = [[NSMutableArray ...

iPhone numberpad with decimal point

I am writing an iPhone application which requires the user to enter several values that may contain a decimal point (currency values, percentages etc.). The number of decimal places in the values ...

热门标签