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方法进 行释放,这就是两者的区别了
 

最新文章

  1. phpMyAdmin如何设置float小数点
  2. zDialog 可拖拽弹出层
  3. kill新号专题
  4. three.js 显示一条线
  5. Search in Rotated Sorted Array II leetcode
  6. [转]用NPOI操作EXCEL--数据有效性
  7. 200. Number of Islands
  8. 与众不同 windows phone (2) - Control(控件)
  9. 【java】多线程同步死锁
  10. JDK AtomicInteger 源码分析
  11. django orm 及常用参数
  12. HTML5 web存储之LocalStorage和sessionStorage
  13. 『高性能模型』深度可分离卷积和MobileNet_v1
  14. es6学习日记1
  15. c或c++的网络库
  16. 【Java】 剑指offer(28) 对称的二叉树
  17. 20172302 《Java软件结构与数据结构》第三周学习总结
  18. 对 data属性的使用之一
  19. [UE4]增加开枪冷却时间, Get Time Seconds
  20. java 基础之--反射详解

热门文章

  1. 07: python基础 零碎知识点
  2. Delphi XE5 for Android (七)
  3. Python3基础 __getattr__ 访问不存在的属性时,新增提示功能
  4. AndroidStudio V2.0.0.汉化
  5. 如何修改ls命令列出来的目录颜色
  6. poj 8469 特殊密码锁
  7. perl 入门知识(1)
  8. Git教程摘录
  9. python 编程基础练习 第一天
  10. Python写ROS 订阅与发布程序