• ObjectiveC 关于类属性的一些问题


    Objective-C 以下简称oc

    在oc中的属性其实是和C#,C++中都挺类似的,类的属性需要使用类的实例对象访问对象的属性,但是在访问之前我们就需要定义属性并实现他。下面是一个简单的例子:

    #import <Foundation/Foundation.h>

     

     

    @interface student : NSObject 

    {

      int age;

      NSString *name;

    }

     

    @property(nonatomic,retain) NSString *name;

    @property(nonatomic) int age;

     

     

    -(void) SetAge:(int)_age;

    -(void) ShowAge;

     

     

    @end

     

     

     

     

    //实现文件

    #import "student.h"

    #import <Foundation/Foundation.h>

     

    @implementation student

    @synthesize name;

    @synthesize age;

     

     

    -(void)SetAge:(int)_age

    {

      age = _age;

    }

     

     

    -(void) ShowAge

    {

      printf("%i",age);

    }

     

    @end

     

     

    我们可以通过下面的两行代码来实现类属性的功能:

    以Name属性为例,进行下面的说明

    1: @property(nonatomic,retain) NSString *name;

    2: @synthesize name;

     

    我们定义的属性,我们还是需要注意的是,属性的名称和变量的名称要一样,通过上面的方式定义的属性,可以通过类的实例来访问这些变量。

    我们可能注意到,有些类的实例变量可能不需要定义为属性的格式,那么这里有什么区别呢?

    我们可以这样理解,对于没有声明为属性的变量,我们可以将他理解为这个变量是类私有的,我们不可以使用类的实例名称来直接调用这些变量。可是实际上,在oc中,我们是可以这么做的,如果这样做,程序也是可以运行的,只是在编译的时候,会提示,该变量可能不会响应。但是,如果声明为属性,就不会出现编译的时候出现提示的错误。

     

    总之:我们可以将他这样理解,如果一个类的成员变量将会类的实例会引用到,那么我们就将他设置为属性,如果将来就会遇到类实例调用的情况,我们就不用将他声明为属性,虽然,不生命属性也可以引用类的成员属性,但是,我们强烈的建议,不要这么做,我们仅仅需要按照规矩来做就可以来,并且知道这是怎么回事就可以了。

     

    日期:2011-07-05

    THE END !

     


  • 相关阅读:
    Crumpet – 使用很简单的响应式前端开发框架
    太赞了!超炫的页面切换动画效果【附源码下载】
    你见过动物是怎么笑的吗?赶紧来看看【组图】
    Treed – 基于拖放 操作的,强大的树形编辑器
    Perfect Scrollbar – 完美的 jQuery 滚动条插件
    Jeet – 先进,直观,灵活的 CSS 网格系统
    舌尖上的设计!10个美味的餐馆和食品网站
    推荐15款最好的 Twitter Bootstrap 开发工具
    Web 前端开发人员和设计师必读精华文章【系列二十五】
    Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
  • 原文地址:https://www.cnblogs.com/xingchen/p/2098220.html
Copyright © 2020-2023  润新知