1.点语法(找出不合理的地方)
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    int _age;
}
- (void)setAge:(int)age;
- (int)age;
@end

@implementation Person
{
    int _age;
}
- (void)setAge:(int)age
{
    _age = age;
    // 会引发死循环
    // self.age = age;
}
- (int)age
{
    return _age;
    // 会引发死循环
    // return self.age;
}
@end



2.@property
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    // no的set和get方法全部都手动实现了,因此系统就不会再生成_no这个成员变量了,只实现一个可产生
    int _no;
}
@property int age;
@property int no;
- (void)test;
@end

@implementation Person
- (void)test
{
    NSLog(@"年龄是%d, 号码是%d", _age, _no);
}

- (void)setAge:(int)age
{
    _age = age;
}

// _no的set和get方法全部都手动实现了,因此系统就不会再生成_no这个成员变量了
- (void)setNo:(int)no
{
    _no = no;
}

- (int)no
{
    return _no;
}
@end


3.成员变量的作用域
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    int _age;
    
@public
    int _no;
    int _weight;
    
@private
    int _height;
    
@protected
    int _money;
}
@end

@interface Student : Person
- (void)test;
@end

@implementation Student
{
    int _money;
@public
    int _friendsCount;
}
- (void)test
{
    _age = 10;
    _no = 1;
    
    // 私有的不能在子类中访问,即在implementation中声明的变量、或在声明中说明为私有的
    // _name = @"Jack";
    _money = 100;
    
    // 私有的不能在子类中访问
    // _height = 170;
}
@end

int main()
{
    Student *s = [Student new];
    s->_no = 1;
    //@propected类型的变量只能在当前类和子类中访问
    //s->_age = 20;
    // 在main函数后面的成员变量都不能直接访问
    //s->_name = @"Rose";
    // 在main函数后面的成员变量都不能直接访问
    //s->_color = 10;
    s->_friendsCount = 500;
    return 0;
}

@implementation Person
{
    NSString *_name;
@public
    int _color;
}
@end

点语法、property、self注意的更多相关文章

  1. OC self = [super init] , 点语法 , @property

    OC self = [super init] , 点语法 , @property 构造方法为啥这么写? self = [super init]; [super init] 的结果可能有三种: 第一种: ...

  2. 网络编程-Python高级语法-property属性

    知识点: 一.什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最 ...

  3. linux设备树笔记__dts基本概念及语法【转】

    转自:http://www.360doc.com/content/15/1113/11/15700426_512794532.shtml 设备树手册(Device Tree Usage)原文地址:ht ...

  4. vb的property 和event

    Event 语句 定义用户自定义的事件. 语法 [Public] Event procedurename [(arglist)] Event 语句包含下面部分: 部分 描述 Public 可选的.指定 ...

  5. WPF样式中TargetType 属性 (Property) 和 x:Key 属性 (Attribute)

    如第一个示例所示,如果将 TargetType 属性设置为 TextBlock 而不为样式分配 x:Key,样式就会应用于所有 TextBlock 元素.这种情况下,x:Key 隐式设置为 {x:Ty ...

  6. Objective-C 关键字:retain, assgin, copy, readonly,atomic,nonatomic

    声明式属性的使用:声明式属性叫编译期语法 @property(retain,nonatomic)Some *s; @property(参数一,参数二)Some *s; 参数1:retain:修饰引用( ...

  7. Objective-C 30分钟入门教程

    Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...

  8. Objective-C汇总

    Objective  C(20世纪80年代初) 一.OC语言概述 .1985年,Steve  Jobs成立了NeXT公司 .1996年,12月20日,苹果公司宣布收购了NeXT  softwar ...

  9. 21)pom 中的缺省值(default properties)

    1 引言 项目中build 时用到了maven-jar-plugin ,其中有一个 ${project.build.directory} <plugin> <artifactId&g ...

  10. Objective-C面向对象(一)

    1.类和对象 1.1定义类 面向对象的程序设计中有两个重要概念:类(class)和对象(object),类事某一批对象的抽象,对象是一个具体存在的实体. Objective-C定义类需要氛围2个步骤 ...

随机推荐

  1. ubuntu 开启 rewrite 模块

    1.sudo a2enmod rewrite 开启Rewrite模块 (停用模块,使用 a2dismod) 2. 在/etc/apache2/ 修改apache2.conf 文件中把AllowOver ...

  2. requirejs + vue 项目搭建2

    上篇是年后的项目搭建的,时间比较仓促,感觉有点low 1.gulp-vue 文件对公用js的有依赖,以后别的同事拿去搭其他项目,估计会被喷 2.不支持vue-loader一样写模版语言和es6语法 最 ...

  3. PHP扫雷(转载)。

    <?php   @$init = $_POST["init"];//game restart  @$clickvalue = $_POST["clickvalue& ...

  4. Python成长之路第一篇(2)-初识列表和元组

    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...

  5. OpenGL ES 三种类型 uniform attribute varying

    1.uniform变量 uniform变量是外部application程序传递给(vertex和fragment)shader的变量.因此它是application通过函数glUniform**()函 ...

  6. LOL是什么意思? - 已解决 - 搜狗问问

    LOL是什么意思? - 已解决 - 搜狗问问 N A T S U . |分类:QQ工具栏 2009-05-04 LOL是什么意思? 满意答案 Shim Nyong 19级 2009-05-04 LOL ...

  7. REST Web Server,REST介绍

    参考资料: 1.http://www.chinalivedoor.com/story/1123.html 2. Backbone.js 是一种重量级javascript  MVC 应用框架,通过Mod ...

  8. 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)

    近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...

  9. 图片延迟加载技术-Lazyload的应用

    我们在浏览图片量非常大的页面时,像淘宝商城商品展示.必应图片搜索这类网站,图片的加载非常流畅,其中就应用了图片延迟加载技术.本文讲解Lazyload图片加载插件,当我们打开页面时,首先在屏幕可视区域加 ...

  10. memcached在注册表的位置

    HKEY_LOCAL_MACHINE-System-ControlSet001-services-Memcached Server