如果类的属性不直接通过点语法赋值可以写成私有的
- (IBAction)testPropertyButtonClick:(id)sender {
TestObject *testObj = [[TestObject alloc] init];
testObj.name = @"name";
NSLog(@"testObj.name: %@", testObj.name);
[testObj setPrivateNameWithString:@"private name"];
}
// TestObject.h
#import <Foundation/Foundation.h>
@interface TestObject : NSObject
{
NSString *_name;
}
@property (copy, nonatomic) NSString *name;
- (void)setPrivateNameWithString:(NSString *)str;
@end
// TestObject.m
#import "TestObject.h"
@interface TestObject ()
{
NSString *_privateName;
}
@property (copy, nonatomic) NSString *privateName;
@end
@implementation TestObject
@synthesize name = _name;
@synthesize privateName = _privateName;
- (void)setPrivateNameWithString:(NSString *)str
{
self.privateName = str;
NSLog(@"self.privateName: %@", self.privateName);
}
- (void)dealloc
{
self.name = nil;
self.privateName = nil;
[super dealloc];
}
@end