点语法、property、self注意

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




[email protected]
#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

时间: 2024-10-12 04:27:35

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

【转】Objective-C语法property详解

1.简介: property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明.@synthesize则是用来生成对应声明方法的实现. 1.1 property的语法格式: @property (参数1,参数2)类型名字: 这里的参数,主要有以下三种: setter/getter方法(assign/retain/copy) 读写属性(readwrite/readonly) atomicity(nonatomic) 1.2 三种方式的

vb的property 和event

Event 语句 定义用户自定义的事件. 语法 [Public] Event procedurename [(arglist)] Event 语句包含下面部分: 部分 描述 Public 可选的.指定该 Event 在整个工程中都是可见的.缺省情况下 Events 类型是 Public.应注意,事件只能在所声明的模块中产生. procedurename 必需的.事件的名称:遵循标准的变量命名约定. arglist 参数的语法及语法的各个部分如下: [ByVal | ByRef] varname[

rsyslog配置解析

RSYSLOG is the rocket-fast system for log processing. 本地Rsyslog版本: 8.25.0-1.el6.x86_64 配置 基本语法 Rsyslog 现在支持三种配置语法格式: sysklogd legacy rsyslog RainerScript sysklogd 是老的简单格式,一些新的语法特性不支持.legacy rsyslog 是以dollar符($)开头的语法,在v6及以上的版本还在支持,一些插件和特性可能只在此语法下支持.Ra

hibernate环境搭建

持久化概念: 持久化就是把数据(如内存中的对象)同步保存到数据库或某些存储设备中(如磁盘文件中.XML数据文件中)等等. 在软件的分层体系结构中,持久化层是与数据库打交道的逻辑层. JDBC-的问题: 代码繁琐: 一个插入对象的例子 public void addAccount(final Account account) throws DAOException,AccountAlreadyExistException{ final Connection conn=getConnection()

iOS9基础知识(OC)笔记

1月16日 Objective  C(20世纪80年代初) 一.OC语言概述 1.1985年,Steve  Jobs成立了NeXT公司 2.1996年,12月20日,苹果公司宣布收购了NeXT  software 公  司,NEXTSTEP环境为apple公司下主要开发.发行操作 系统OSX的基础,这个开发环境的版本被苹果公司命名为 Cocoa(可可)框架             NSString  NS=NEXTSTEP 3.Cocoa框架  (Cocoa  Touc

面向对象的三大特征

OC中的封装.继承.多态1)一个类中有多个属性,而对于属性,为了安全不应该给属性修饰@public,默认的是有@protect修饰符修饰的.而被@protect修饰符修饰的属性只能被在本类和子类中的对象通过箭头访问.那么想在别处需要使用这个属性,就应该给每个属性封装一个setter和getter方法,如果想使用这个属性的时候,直接调用setter和getter方法就可以了. 属性的setter方法是用于属性的赋值,而getter方法是取值.setter方法:- (返回值类型) set去掉下划线且

hibernate源码-配置文件加载过程分析

Hibernate建议,在一个应用系统当中Configuration与SessionFactory为单例,Session为多例. 当我们执行如下代码,hibernate开始加载默认的配置文件 new Configuration().configure() hibernate会在classath的根路径下,查找名为"hibernate.cfg.xml" 的配置文件,并解析它,过程如图1所示 图1:配置文件加载过程时序图 下面一起分析一下配置文件加载过程 Step 1.Configurat

iOS线程加锁

// 加锁 @synchronized (self) { // 在同一时间,只能一个线程执行,但是很耗资源 } // 解锁 关于加锁,这里有一个东西.关于这个语法:@property.每次我们定义 一个属性的时候,会首当其冲的写上nonatomic,这是为什么?请看下面解说: nonatomic与atomic在@property中的不同: 都知道,这两个关键字代表的是同一个东西,只是代表的含义不同.是与线程有关的. nonatomic代表的是:线程是不安全的. atomic代表的是:线程是安全的

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

声明式属性的使用:声明式属性叫编译期语法 @property(retain,nonatomic)Some *s; @property(参数一,参数二)Some *s; 参数1:retain:修饰引用(对象)数据类型 assgin:修饰基本数据类型(默认) copy:一些对象需要复制才能使用NSString readonly:只读,只有setter方法,没有getter方法 参数2:保证多线程的安全性 atomic:原子性 线程是安全的,但效率低(默认) nonatomic: 非原子性 线程是不安

objective C 内存管理及属性方法详解

oc为每个对象提供一个内部计数器,这个计数器跟踪对象的引用计数,当对象被创建或拷贝时,引用计数为1,每次保持对象时,调用retain接口,引用计数加1,如果不需要这个对象时调用release,引用计数减1,当对像的引用计数为0时,系统就会释放掉这块内存,释放对象调用dealloc 当对象包含其他对象时,就得在dealloc中自己释放他们 NSObject是IOS所有类的基类 有两个基本函数,alloc和dealloc alloc类似于C++的new,dealloc类似于delete 当对象的re