zoukankan      html  css  js  c++  java
  • oc对象中属性总结


    UIView 用weak

    NSstring 用copy

    其他对象用strong

    @property(getter = isRich,setter = setRich:)BOOL rich;//当属性是bool类型的时候我们一般需要指定生产的get和set方法,提高可读性,当然这里的set方法和默认的一致。

    @property(assign,atomic,readonly) int age;//readonly代表只生产get方法,readwrite代表只生产set方法

    @property(assign,atomic) int age;//这里的atomic代表这个属性是线程安全的,多个线程访问的时候会加锁,nonatomic代表不需要线程安全考虑,一般这个都用这个属性。不需要考虑线程安全。

    @property(assign) int age;//assign表示按照普通的方法生产getset方法,不会像下面的内存管理一样生产set方法

    @property(nonatomic,strongBook * book;//nonatomic代表此对象不需要线程管理。

    @property(retain,nonatomic) Book * book;//retain修饰oc对象的时候,会自动管理内存

    retain修饰的时候set方法的时候会这么产生,当然retain是不会生产这样的dealloc,需要自己复写。

    -(void)setBook:(Book *)book{

        if(_book!=book){

        [_book release];

        _book=[book retain];

        }

    }

    当然在完整的内存管理的时候,set进来的时候引用计数器+1,在这个类的dealloc方法里要release一次

    -(void)dealloc{
      //insert your code;
      [_book release];
      [super dealloc];
    }
    上面的setter方法和这个dealloc方法是配套的使用的内存管理

    oc中所有在.h里面声明的方法都是公共方法。
    当要声明一个私有方法的时候只要将这个方法放到.m文件里面即可,并且没有在.h里面没有声明。
    oc中的成员变量一般都用"_"开始。
    当我们要自定用oc的初始化方法的话
    initWithAge:(int)age andNo:(int)no{
      self=[self init]
      if(self){
         _age=age;
         _no=no;
        }
      return self;
    }

    oc中有个方法和java的toString方法一样叫做description方法,复写即可(这个方法是来自NSObject的)原来只会打印内存地址,这里将其复写了下
    -(NSString *)decription{
    NSString * str =[NSString stringWithFormat:"ksdfhk%d",_age];
        return str;
    }


    @synthesize age;//这个关键字在生成setter和getter方法的时候会在.h里面找那个同名的属性,如果找不到会自动造一个同名的
    当如果我们要其访问的成员变量是_age的时候
    我们可以这么写
    @synthesize age=_age;//这个就是在指定访问的成员变量;有开发工具生产的属性都是私有的。


    xcode4.5以后,只要你写了@property int age就会自动产生getter和setter的声明和实现,,,实现的时候还是自动访问_age这个属性(现在.h里面找),如果没有这个属性就会自动生产一个私有_age(
    这里指的私有的就是在.m文件里面定义的)
    所有从这里就可以看出私有的变量可以在.h里面定义然后用@private修饰,或者直接定义在.m文件里面

    这里生产的都是标准的setter和getter方法,如果有其他需求必须自己实现其getter和setter方法。
    oc中修饰成员变量的3中权限
    @private
    @protected
    @public
    但是@public好像没什么意义,要怎样用到这个@public呢
    
    Student *stu=[[[Student alloc]init]autorelease];
    stu->age=10;
    age是Student类的一个公共属性,所以可以像上面那样访问
    1.这里只记录一些学习笔记 2.这里只记录一些学习心得,如果心得方向有错,请留言 2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
  • 相关阅读:
    Qt相关资料收集
    bakefile初试
    Install VirtualBox 2 Guest Additions in Ubuntu
    Qt使用笔记(2)--Qmake的使用
    英语单词词频
    wxWidgets应用--使用方法与技巧连接收藏
    Learning English
    [转贴]深圳八年职场与人生感言
    帮朋友招聘通信类人才!!!!!
    [新闻]华为发布最高端核心路由器NE5000E集群系统
  • 原文地址:https://www.cnblogs.com/liyang31tg/p/3601841.html
Copyright © 2011-2022 走看看