博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC 对象调用属性或实例变量或方法的细节。
阅读量:6667 次
发布时间:2019-06-25

本文共 1800 字,大约阅读时间需要 6 分钟。

 
1.成员变量可以理解为所有在类的头上声明的,无论是@interface、@implementation下用大括号括起来或者是用声明的变量都可以称作这个类的    成员变量,只是在@implementation下声明的变量是这个类的私有变量,外部无法访问的,而在@interface下声明的变量可设定为全局或者私有变量,      而用声明的就是全局变量,是外部既可以访问,内部也可以调用的 2.首先确定一下,对象.xxx的语法后跟的不是成员变量,是一个可以被访问的方法名,之所以让你感觉"对象.成员"便令这种方式调用,是因为用 定义或者手动设置了这个变量的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方法进     行释放,这就是两者的区别了
 

转载地址:http://fqsxo.baihongyu.com/

你可能感兴趣的文章
ACL 解释
查看>>
Django的路由系统
查看>>
poj 3262 Protecting the Flowers 贪心
查看>>
Fiddler开启调试模式
查看>>
南大西洋异常区
查看>>
1、SpringBoot+MybatisPlus整合
查看>>
Android应用神器:高级终端Termux
查看>>
contentsize和contentoffset以及contentInset的区别
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
JAVA开发相关
查看>>
miniUI ExcelExport导出JAVA实现
查看>>
js日期控件(纯手写)
查看>>
android源代码在线阅读
查看>>
java中的类修饰符、成员变量修饰符、方法修饰符。
查看>>
帝国备份王(Empirebak)万能cookie及拿shell
查看>>
BZOJ 4753 [Jsoi2016]最佳团体 ——01分数规划 树形DP
查看>>
【原创】《精益创业思维》分享会总结
查看>>
js,css引用顺序设定
查看>>
改变默认选择前1000行,编辑前200行【MSSQL】
查看>>
平时代码中用不到设计模式?Are you kidding me?
查看>>