本帖最后由 wenwei19861106 于 2012-12-03 12:28:38 编辑

解决方案 »

  1.   

    proprety属于抽象概念,实体变量则是在结构中的存储槽,正常情况下,其他对象不能直接访问它们。而property是对象的属性,可以访问。此外,property可以返回或发送一个实体变量, 看下面的例子@interface Person : NSObject {
        NSString *name;
    }    @property(copy) NSString *name;
        @property(copy) NSString *firstName;
        @property(copy) NSString *lastName;
    @end@implementation Person
        @synthesize name;    - (NSString *)firstName {
            [[name componentsSeparatedByString:@" "] objectAtIndex:0];
        }
        - (NSString *)lastName {
            [[name componentsSeparatedByString:@" "] lastObject];
        }
        - (NSString *)setFirstName:(NSString *)newName {
            NSArray *nameArray = [name componentsSeparatedByString:@" "];
            NSArray *newNameArray [[NSArray arrayWithObjects:newName, nil] arrayByAddingObjectsFromArray:[nameArray subarrayWithRange:NSMakeRange(1, [nameArray size]-1)]];
            self.name = [newNameArray componentsJoinedByString:@" "];
        }
        - (NSString *)setLastName:(NSString *)newName {
            NSArray *nameArray = [name componentsSeparatedByString:@" "];
            NSArray *newNameArray [[nameArray subarrayWithRange:NSMakeRange(0, [nameArray size]-2)] arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:newName, nil]];
            self.name = [newNameArray componentsJoinedByString:@" "];
        }
    @end代码中假设name已经存在,并且有两部分(比如像Bill Gates这样,而不是Gates这种)
      

  2.   

    在Object-c中添加属性之前,程序员通常会定义一些方法用于设置和检索类得实例变量的值,这些方法称为访问方法和修改方法,亦可称为获取方法和设置方法(java中称为set和get方法)。但是@property声明可以让你告别枯燥乏味的访问方法和修改方法。我们在接口文件中键入的@property声明与实现文件(@synthesize)中的另一个声明相结合,就可以通知编译器在编译时创建获取方法和设置方法。