oc 实例变量可见度、方法

为什么80%的码农都做不了架构师?>>>   hot3.png

⼀、实例变量可⻅度

@public                   在类的外部和内部均可访问

@protected(默认)   只能在该类和其⼦类内访问

@private                  只能在该类内访问


⼆、⽅法(定义、声明、调用)

OC中的方法分两种:类方法、实例方法

 同一个类中,所有的方法中不能出现重名
 

方法的声明

- (返回值类型)方法名:(参数类型1)参数名1 修饰词:(参数类型2)参数名2

- (paraType)methodName:(paraType)paraName1 descripName:(paraType)paraName2


方法的调用

  类方法 + 只能类调用 [class_name class_method_name];

类方法中,不能使用实例变量(调用类方法时,没有创建对象)

+ (void)sayHi;

  实例方法 - 只能对象调用 [object_name instance_method];

- (void)sayHello;



三、setter、getter

setter:设置实例变量的值

- (void)setName:(type)name;

getter:获取实例变量的值

- (type)name;




OC2.0.setter

如果通过setter方法为对象设置初始值,需通过以下方式:

- (void) setOrigin: (XYPoint *) pt

{

     if (origin)

          [origin release];


     origin = [[XYPoint alloc] init];


     [origin setX: pt.x andY: pt.y];

}

原因:若不alloc,创建多个对象后,指针指向同一内存区域,修改某一个对象的origin将会改变所有对象的origin值。





四、自定义初始化方法

使用自定义初始化方法创建对象

创建对象后,不能再调用初始化方法

- (id)initWithName1:(type)name1 name2:(type)name2 …;


五、类的调用

#import "ClassName.h"

循环调用的产生:

A.h:    #import "B.h"

B.h:    #import "A.h"

编译器执行时,在#import 处出现死循环,永远执行不到@interface ,因此所导入的类不可被识别

防止循环调用

在 .h 文件中使用 @class  ClassName;   告知编译器class后面的标识符是一个类

在 .m 文件中 使用 #import 导入所需类所在文件


简答题:

 

1、实例变量的可见度有哪几种?默认的是什么?(中英文都要记)

@public @protected @private

2、如何对一个类的默认可见度的实例变量进行赋值和取值?

getter&setter method

3、面向对象编程的三大特征?

封装(保证了属性与方法的关联性)

继承(代码复用)

多态(在代码复用的同时,强化了个性差异)

4、什么是封装?

封装:对外提供声明,对内隐藏内部实现

5、#import有什么作用?#import和#include有什么不同?

#include 和 #import的区别

(1)include不能重复导入同一个文件

(2)import可以重复导入同一个文件

(3)现在include和import都可以重复导入

6、对象的内存分配在哪个区?

堆区

7、堆区和栈区的区别(从内存的分配和回收考虑)

栈区由系统负责分配和回收

堆区由开发者负责分配和回收

8、OC中的方法有几类?OC中有私有方法吗?

两类:类方法、实例方法

9、如何确定两个方法是否同名?

 

10、-(id)setName:(NSString *)name  :(NSString *)sex  age:(int)age的方法名是什么?

setName: : age:

11、定义并实现一个实例变量的setter和getter方法。

12、#import ” ”和#import < >有什么区别?

“” 导入用户文件

<> 导入系统文件

13、@class有什么作用?#import和@class有什么区别?

@class告知编译器系统class后面的标识符是一个类,并没有导入这个类的内容

#import导入文件的内容

转载于:https://my.oschina.net/zooyf/blog/487242

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 js替换网页中的关键词为链接

要求把一段html脚本中的疾病名添加到疾病库的链接&#xff0c;只添加一次&#xff0c;要避开超链接或图片链接。 最初是用的 str.replace(糖尿病, <a href...>糖尿病</a>); 结果找了半天&#xff0c;愣是没找到替换后的效果&#xff0c;原来是有个图片的title中…

凡人修仙传显示无法连接服务器,《凡人修仙传》网络异常及橙色BOSS补偿说明...

【网络异常及橙色BOSS补偿说明】亲爱的玩家朋友&#xff1a;《凡人修仙传》所有服务器由于网络异常在今晚(12月6日晚)陆续出现了延迟与宕机。对广大玩家造成了影响&#xff0c;我们深表歉意&#xff01;网络异常还对部分大区的橙色BOSS造成了影响&#xff0c;导致活动没有顺利进…

白屏优化_今日头条品质优化 图文详情页秒开实践

背景作为一个内容类应用&#xff0c;看新闻读资讯一直是头条用户的核心需求&#xff0c;页面的打开速度直接关系到用户使用头条的核心体验&#xff0c;在头条中&#xff0c;为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一&#xff0c;详情页的内容我们是通过 WebView…

JPA字段长度 Mysql数据库

2019独角兽企业重金招聘Python工程师标准>>> 今天有个表字段超长了&#xff0c;默认是255&#xff0c;当时随手把表结构改成3600。然后晚上回来研究JPA控制的字段长度。 实验一&#xff1a; Column(length50, nullabletrue) private String valueText; 毫无疑问&…

JavaWeb学习----Cookie实现记住密码的功能

【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/4096807.html 【正文】 本文主要内容&#xff1a; •1、什么是Cookie •2、Cookie带来的好处 •3、Co…

【学习笔记】在storyboard中给TabViewController添加tab页面

正题&#xff1a;1、首页动态拖一个UIViewController到storyboard中2、然后右键UITabBarController在木manaul栏右侧的加号连线新的UITabViewController就成功添加完毕转载于:https://blog.51cto.com/3048821/1682420

使用matlab画半透明椭圆

先上最终效果图&#xff1a; 本来是想直接用scatter和alpha来画的&#xff0c;结果在尝试以下代码后&#xff0c;发现无法显示透明效果 scatter(rand(1000,1),rand(1000,1), filled); alpha(0.5) 具体原因可以参考stackoverflow&#xff08;http://stackoverflow.com/questions…

双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...

关于图表的组合排版&#xff0c;在之前的微信文章中介绍过很多常规的方法&#xff0c;比如《绘制复杂组合图表的独家秘笈分享》、《如何用Graphpad Prism绘制超复杂组合图&#xff1f;》、《如何用Origin完成图表排版&#xff1f;》等。可是&#xff0c;有小伙伴就问了&#xf…

小米5s的位置服务器,小米手机NFC在哪里?告诉你小米手机NFC位置(包括小米5/5s/6/MIX2/Note3)...

NFC功能的普及为智能手机锦上添花&#xff0c;闪付、充值交通卡、模拟门卡、模拟交通卡...NFC的功能越来越强大了&#xff0c;日常生活中需要用到的地方也越来越多了。可问题往往会在这个时候被发现&#xff0c;许多人在使用NFC的时候总是失败。比如说充值交通卡吧&#xff0c;…

微信转发的文件服务器留存吗,微信转发这种视频会感染病毒泄露隐私?网警的查证结果来了...

原标题&#xff1a;微信转发这种视频会感染病毒泄露隐私&#xff1f;网警的查证结果来了最近网上流传一条“紧急通知”&#xff0c;称微信上流传着一些必须转发后才能继续观看的视频&#xff0c;这些视频其实被内植病毒&#xff0c;一旦转发&#xff0c;机主隐私立马被泄露。真…

微软Connect教程系列--自动生成增删改查页面工具介绍(二)

本章课程描述了vs2015的三个特点&#xff0c;其中主要将描述在vs2015下面&#xff0c;使用命令自动生成增删改查界面&#xff0c;具体如下&#xff1a; 1、web.config文件不在存在&#xff0c;用config.json替代&#xff0c;以适应支撑vs的插件化。 即config.json可以在项目中不…

PI数据库的使用-PI System Management Tools

1、PI连接管理器 2、标记搜索 3、当前值 转载于:https://www.cnblogs.com/jumahe/p/4107790.html

一种用css实现图片在父框中等比缩放并垂直居中的办法

一个网页中往往会有很多图片&#xff0c;而网站的编辑上传图片时可能并不一定按照为父框设定的那个宽高来传&#xff0c;这样图片往往会将父框撑开或者被父框截断。一种比较好的解决的办法是这样的&#xff1a; HTML代码结构&#xff1a; <div class"dimg"><…

CLR VIA

标题 状态 内容 什么是CLR? 什么是托管模块&#xff1f; 托管模块由什么组成&#xff1f; 。net代码的执行过程 http://www.cnblogs.com/aaa6818162/p/4726581.html http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html 为了执行程序&#xff0c;首…

jQuery表格排序总成-tablesorter

一个、进口单证<script type"text/javascript" src"js/jquery.js"></script> <script type"text/javascript" src"js/jquery.tablesorter.js"></script> <!-- 引入下面样式则表头出现排序图标。同一时候…

5渲染判断_云渲染怎么收费,5大云渲染平台实测,您选对了吗?

3DMAX云渲染平台都怎么收费&#xff1f;5大云渲染平台测试后才知道差距这么大&#xff0c;您用对了吗&#xff1f;本次共计测试了3个镜头&#xff0c;为了让大家很直观地感受各个平台渲染时间和费用上的对比&#xff0c;我整理了个表格&#xff0c;供大家自行参考和判断。若有疑…

Android工程的编译过程

现在很多人想对Android工程的编译和打包进行自动化&#xff0c;比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对Android工程的编译和打包有一个深入的理解&#xff0c;至少要知道它的每一步都做了什么&#xff0c;需要什么环境和工具&#xff0c;输入和输出是什…

activiti 工作流设置并行审批_activity、jbpm5、snakerflow常用工作流审批流对比

# 审批流调研背景由于目前产品研发组支持的产品项目越来越多&#xff0c; 同时几乎每个项目都会有导出审批&#xff0c;流程流转等需求&#xff0c;本着提高开发效率和组件化的目的&#xff0c;调研和开发通用的工作流组件&#xff0c;为后面的项目和新的需求提供快速支持。主要…

Spring web应用最大的败笔

第一篇 介绍下IOC DI Spring主要是业务层框架&#xff0c;现在已经发展成为一个完整JavaEE开发框架&#xff0c;它的主要特点是IoC DI和AOP等概念的融合&#xff0c;强项在面向切面AOP。推出之初因为Ioc/AOP等新设计理念值得框架设计者学习&#xff0c;现在已经成为Java世界主流…

***PHP 去除换行符

PHP在不同的系统中&#xff0c;换行是不同的 Linux&#xff1a;\n Windows&#xff1a;\r\n mac&#xff1a;\r 所以去除回车换行的方法: 1.使用php定义好的变量&#xff08;比较好的方法&#xff0c;推荐&#xff09; $str str_replace(PHP_EOL, , $str); 2.使用str_replace …