首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

IOS中nsstring的有关问题

2012-12-15 
IOS中nsstring的问题本帖最后由 wenwei19861106 于 2012-12-03 12:28:38 编辑首先我在.h中这样写#import

IOS中nsstring的问题
本帖最后由 wenwei19861106 于 2012-12-03 12:28:38 编辑 首先我在.h中这样写

#import <UIKit/UIKit.h>

@interface wenViewController : UIViewController{
    NSString *key;
    
}

我在.m文件件中可以访问和修改key
第二种方法是在.h文件中这样写
#import <UIKit/UIKit.h>

@interface wenViewController : UIViewController{
    NSString *key;
    
}
@property (nonatomic, retain) NSString *key;

这样2种写法都可以进行读写 又区别吗
[最优解释]
JAVA中的成员变量与属性。


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

热点排行