总结: 当使用 self.str1 = @"xxx";时, 系统自动调用 setter方法
param_str = self.str1; 自动调用getter方法
注意: 只在对象点属性的时候才会调用, 在setter方法内复制必须
str1 = param_str1; 正确
self.str1 = param_str1; 错误 (会无限递归)
#import <Foundation/Foundation.h> @interface MyTestModel : NSObject @property (nonatomic, strong) NSString *str1; //- (NSString *)str1; //- (void)setStr1:(NSString *)str1; @end
#import "MyTestModel.h" @implementation MyTestModel @synthesize str1; - (void) setStr1:(NSString *)param_str1 { NSLog(@"property str1's set method is automatically invoke when assignment!"); str1 = param_str1; } - (NSString *)str1 { NSLog(@"invoke getter"); return str1; } @end