1.成员变量可以理解为所有在类的头上声明的,无论是@interface、@implementation下用大括号括起来或者是用@property声明的变量都可以称作这个类的    成员变量,只是在@implementation下声明的变量是这个类的私有变量,外部无法访问的,而在@interface下声明的变量可设定为全局或者私有变量,      而用@property声明的就是全局变量,是外部既可以访问,内部也可以调用的

2.首先确定一下,对象.xxx的语法后跟的不是成员变量,是一个可以被访问的方法名,之所以让你感觉"对象.成员"便令这种方式调用,是因为用
@property定义或者手动设置了这个变量的setter和getter方法的方法名和成员变量一样,实际调用的是方法;(照我说说改一改你的程序,看看)
[对象 方法]才是OC中标准的调用方法的语法方式,这种方式的原理是向该对象中发送一个消息,如果对象中有相应的消息就会做出回应,这就是OC 的消息机制,目前最常用的也是这一种表示形式 总结:对象.方法==[对象 方法] (只有在方法名为setter/getter情况下,相等) 没有 对象.属性和对象.成员变量
如果 要用对象访问成员变量 可以用 对象->属性
ps: 1.@property NSString *name; 在implementation中
self.name=@"字符串";// 可以赋值
NSLog(@"%@",self.name);//可以取值
       在主函数中
对象.name=@"字符串";// 可以赋值
NSLog(@"%@",对象.name);//可以取值
     2.
{
NSString *name;
}
-(void) setname:(NSString *) n
{
  self.name=n;// 不报错 ,但不可以赋值 因为这个会产生死循环(self.name=n 相当于 [self setname: n] )这就形成了循环调用问题
self->name=n; //可以赋值
name=n;
}
-(NSString *) name
{
return name;
}
       在主函数中
对象.name=@"字符串";// 可以赋值
NSLog(@"%@",对象.name);//可以取值
   3.
{
NSString *name;
}
-(void) setName:(NSString *) n
{
  self.name=n;// 不可以赋值 错误提示:No setter method 'setname':for assignment to property
name=n;// 可以赋值
}
-(NSString *) name
{
  return name;
}
       在主函数中
对象.name=@"字符串";// 不可以赋值
对象 setName:@"字符串" // 可以赋值
NSLog(@"%@",对象.name);//可以取值

3.类方法的意思是不需要声明一个对象(实例)就可以直接调用的方法,通常是有返回值的(否则类方法就无意义了,因为没有对象或者相应的成员变量的   值可以设置)。作用就是返回一些这个类特定的实例,比如字符串的[NSString stringWithFormat:@""];这个类方法,作用就是返回一串自定义的字符串,   用法和[NSString alloc]initWithFormat:@""];没有区别
但是,实际上用类方法创建的对象是被系统自动归到自动释池下管理的,而用alloc方法创建的对象如果在手动内存管理模式下,需要用release方法进 行释放,这就是两者的区别了
 

OC 对象调用属性或实例变量或方法的细节。的更多相关文章

  1. python: 面向对象:类和对象调用类中的变量和方法

    一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要 ...

  2. Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量

    1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成 ...

  3. (转)Objective-C语言--属性和实例变量

    本文转自http://blog.csdn.net/addychen/article/details/39525681 使用Objective-C一段时间了,一直没有弄清楚在Objective-C中属性 ...

  4. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

  5. objective-C学习笔记(三)数据成员:属性与实例变量

    类型成员 Type Member 结构体 struct 的成员很简单,只有变量. 类的成员就很多了: 数据成员 data member 描述对象(本讲重点) · 实例变量  instance vari ...

  6. 第8.12节 Python类中使用__dict__定义实例变量和方法

    上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法. 一. 使用__dict__定义实例变量 语法: 对象名. dict[属性名] = ...

  7. Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别

    Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 ​ 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...

  8. IOS的属性和实例变量

    实际上,@property声明的是属性,并不是实例变量.但是编译器会根据属性,自动生成实例变量,和对应的access方法.所以已经在interface里声明了@property,就不再需要在imple ...

  9. python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过“类名()”的方式实例 ...

随机推荐

  1. CentOS7.3防火墙firewalld简单配置

    今天安装了centos7.3, 想用iptables的save功能保存规则的时候发现跟rhel不一样了,  后来度娘说centos用的是firewalld而不是iptables了, 平时工作都是用re ...

  2. QTQuick控件基础(2)

    import QtQuick 2.2import QtQuick.Controls 1.2import QtQuick.Window 2.1ApplicationWindow {    visible ...

  3. 20145227鄢曼君《网络对抗》MSF基础应用

    20145227鄢曼君<网络对抗>MSF基础应用 主动攻击:ms08_067漏洞攻击实践 两台虚拟机,其中一台为kali,一台为windows xp sp3(英文版).在VMware中设置 ...

  4. 20145332卢鑫 WEB安全基础实验

    20145332 WEB安全基础实验 实验过程 ·SQL字符串注入 ·Database Backdoors step1 ·Database Backdoors step2 ·Phishing with ...

  5. sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

  6. 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库

    参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...

  7. Spring编译AOP项目报错

    警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram ...

  8. 【hbuilder】如何根据Geolocation获得的坐标获取所在城市?

    第一步通过mui.plusReady[表示页面加载事件]调用hbuilder提供的百度定位 mui.plusReady(function() { plus.geolocation.getCurrent ...

  9. R语言低级绘图函数-abline 转载

    abline 函数的作用是在一张图表上添加直线, 可以是一条斜线,通过x或y轴的交点和斜率来确定位置:也可以是一条水平或者垂直的线,只需要指定与x轴或y轴交点的位置就可以了 常见用法: 1)添加直线 ...

  10. 洛谷P2777 [AHOI2016初中组]自行车比赛

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...