温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

object-c中的点调用和权限

发布时间:2020-07-30 23:47:46 来源:网络 阅读:564 作者:Mr_Dai 栏目:开发技术

1.如果你学过JAVA语言的的话,点调用的经常使用到的。

在JAVA中创建一个学生类:

publicclass student {

private String name;

private String age;

publicvoid setName(String name){

this.name  = name;

}

public String getName(){

returnname;

}

}

如果我们要调用student中的setName方法直接使用创建student.setName("张三")就可以使用setName方法,由于在JAVA中我们的类的属性通常都是私有的不可以直接调用的。所以要调用set方法设置值.


2.上面的例子只是回顾下什么叫做点调用:Object-c例子:

//-------------------------------------------------------------定义文件

#import <Foundation/Foundation.h>

@interface what : NSObject{

@public  

int _age ;

@public

int _number;


}

-(void) setAge:(int) newAge;

-(int) age;

-(void) setNumber:(int) newNumber;

-(int) number;

@end


//-------------------------------------------------------------实现文件

#import "what.h"


@implementation what

-(int)age{

NSLog(@"ageget方法");

return_age;

}

-(void)setAge:(int)newAge{

NSLog(@"ageset方法");

_age = newAge;

}


-(int)number{

NSLog(@"numberget方法");

return_number;

}


-(void)setNumber:(int)newNumber{

NSLog(@"numbeget方法");

_number = newNumber;

}

@end

//-------------------------------------------------------------main方法

#import <Foundation/Foundation.h>

#import "what.h"

int main(int argc, constchar * argv[])

{

@autoreleasepool {

what *my  = [[whatalloc] init];

       //这里调用了setAge

       my.age = 20;

       //这里调用了setNumber

       my.number = 100;

       //这里调用了get方法

       NSLog(@"my age is %i;and my number is %i",my.age,my.number);


   }

return0;

}

------------------------------------------------------------------

当我们运行上面的程序后会打印:

2014-04-15 23:04:51.400 点调用[588:303] ageset方法

2014-04-15 23:04:51.402 点调用[588:303] numbeget方法

2014-04-15 23:04:51.402 点调用[588:303] ageget方法

2014-04-15 23:04:51.402 点调用[588:303] numberget方法

2014-04-15 23:04:51.403 点调用[588:303] my age is 20;and my number is 100

------------------------------------------------------------------

从打印的结果来看,我们的Objec-c在使用点调用的时候,调用的是get或者set方法。

把打印的代码修改一下:


NSLog(@"my age is %i and my number is %i",my->_age,my->_number);


打印结果为:

------------------------------------------------------------------

2014-04-15 23:08:11.194 点调用[632:303] ageset方法

2014-04-15 23:08:11.204 点调用[632:303] numbeget方法

2014-04-15 23:08:11.205 点调用[632:303] my age is 20 and my number is 100

------------------------------------------------------------------

从上面的打印可以看出我们没有调用get方法。



3.这里我要补充一下,这里我们使用了到了Object-c中的权限关键字:@public,

Object-c中权限有3种:

@public:任何类都可以方法

@protected:子类可以访问

@private:本类可以访问

在Object-c中默认的权限是@protected,也就是说子类可以访问。



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI