代码:
/* 属性声明方式说明: ----------------------- 1 @interface ... { id name } @end 这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用) ---------------------- 2 @interface ... @property id name @end 这样声明的属性可以认为是public属性,内部通过“self.name”引用;外部通过“object.name”引用 ----------------------- 3 @implementation ... @synthesize name @end 允许以property声明的属性,在内部方法里除了以self引用外,还可以用属性名直接引用 ----------------------- 4 self.name 其实是是两个方法(setter,getter): id value = [self name] [self setName = ...] ----------------------- 5 总结: 如果框架依赖的属性是@property,就不能实现为私有,否则程序可以崩掉 */ #import <Foundation/Foundation.h> @interface Student : NSObject { NSString *name; } @property NSString *address; -(void) toString; @end @implementation Student @synthesize address; -(Student *)init { name = @"lishujun"; self.address = @"beijing"; return self; } -(void) toString { NSLog(@"%@ %@", name, [self address]); } @end int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... Student *student = [[Student alloc]init]; [student toString]; [student setAddress:@"tongzhou"]; [student toString]; NSLog(@"%@", student.address); // 语法错误,没有setName这个方法 //[student setName:@"shujunli"]; //[student toString]; } return 0; }
时间: 2024-10-24 13:08:51