下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】长沙戴维营教育iOS开发面试题周刊
[TOC]assign简单的指针赋值,不涉及引用计数的操作。copy产生一个新对象,引用计数为1,老对象引用计数不变。retain对象的引用计数加1。weak自动引用计数环境下使用,与assign类似,但是当对象释放后会自动置为nil。strong自动引用计数环境下使用,类似于retain,强引用的对象不会被释放。center和frame是指视图在父视图的坐标系统中的表示,center表示UIView的中心点在父视图坐标系统中的位置,frame表示UIView在父视图坐标系统中的位置和大小。bounds表示视图在它本身的坐标系统中的位置。如果修改bounds的origin会导致该视图的子视图位置发生改变,但不会影响视图本身的位置。一般来说,frame是由center和bounds计算得来。或者是说UIView的frame由它所拥有的CALayer的position、anchorPoint和bounds决定。
Ball
*ball
=
[[[[Ball
alloc]
init]
autorelease]
autorelease];给对象发送一次autorelease消息就会将它在自动释放池中注册一次。当自动释放池release或者drain的时候,将给注册到里面的对象按注册的次数发送release消息。因此最后ball对象会接收到两次release消息,由于ball的引用计数为1,当接收第一次release后就被释放了。第二次release的时候会导致程序崩溃。KVC是由NSKeyValueCoding非正式协议所实现的一种机制,使得应用程序可以通过名字或Key来访问对象的属性,而不是直接调用访问器或者实例变量。示例代码://
Copyright(c)2014年戴维营教育.Allrightsreserved.//#import
@class
DVIDog;@interface
DVIStudent
:
NSObject{@public
NSString
*_name;@protected
NSString
*_studentID;@private
float
_height;}//_age@property
(nonatomic,
assign)
int
age;@property
(nonatomic,
strong)
DVIDog
*dog;@property
(nonatomic,
strong)
NSMutableArray
*dogsArray;-
(void)printInfo;-
(void)setValueFromDict:(NSDictionary
*)dict;@end类的实现:////
DVIStudent.m//
KVCSample////
Copyright(c)2014年戴维营教育.Allrightsreserved.//#import"DVIStudent.h"#import"DVIDog.h"@implementation
DVIStudent-
(id)init{
if
(self
=
[super
init])
{
_dogsArray
=
[NSMutableArray
array];
}
return
self;}@synthesize
age
=
_age;-
(void)printInfo{
NSLog(@"%@:%@:%d:%f",
_name,
_studentID,
_age,
_height);}-
(void)setValueFromDict:(NSDictionary
*)dict{
_name
=
[dict
objectForKey:@"name"];
_age
=
[[dict
objectForKey:@"age"]
intValue];
_height
=
[[dict
objectForKey:@"height"]
floatValue];
_studentID
=
[dict
objectForKey:@"studentID"];}-
(void)setValue:(id)value
forUndefinedKey:(NSString
*)key{
NSLog(@"%@:%@",
key,
value);}-
(void)setNilValueForKey:(NSString
*)key{
NSLog(@"%@",
key);}-
(void)setAge:(int)age{
NSLog(@"age:%d",
age);
_age
=
age;
_height
+=
0.1;}-
(int)age{
return
_age;}@end第二个类://
Copyright(c)2014年戴维营教育.Allrightsreserved.//#import
@interface
DVIDog
:
NSObject@property
(nonatomic,
assign)
int
weight;@end第二个类的实现://
Copyright(c)2014年戴维营教育.Allrightsreserved.//#import"DVIDog.h"@implementation
DVIDog@end使用KVC访问属性:_student
=
[[DVIStudent
alloc]
init];//
student.age=20;[_student
setValue:@20
forKey:@"age"];_student->_name
=
@"Zhangsan";//1._key//2.key[_student
setValue:@"1001"
forKey:@"studentID"];[_student
setValue:@1.7
forKey:@"height"];[_student
printInfo];NSLog(@"%@",
[_student
valueForKey:@"age"]);NSDictionary
*dict
=
@{@"name":@"Lisi",@"studentID":@"2002",@"age":@33,@"height":@1.8};[_student
setValueFromDict:dict];[_student
printInfo];dict
=
@{@"name":@"Wangwu",@"studentID":@"3002",@"age":@23,@"height":@0.8};[_student
setValuesForKeysWithDictionary:dict];[_student
printInfo];DVIDog
*dog
=
[[DVIDog
alloc]
init];_student.dog
=
dog;_student.dog.weight
=
20;[_student
setValue:@30
forKeyPath:@"dog.weight"];NSLog(@"%@",
[_student
valueForKeyPath:@"dog.weight"]);[_student
setValue:@12
forKey:@"weight"];[_student
setNilValueForKey:@"age"];NSLog(@"%@",
[_student
valueForKey:@"age"]);KVC中除了访问单个属性外,还能够对集合属性进行访问和操作:for
(int
i
=
0;
i
<</span>
100;
++i)
{
DVIDog
*dog
=
[[DVIDog
alloc]
init];
dog.weight
=
i;
[_student.dogsArray
addObject:dog];}//NSLog(@"%@",
[_student
valueForKeyPath:@"dogsArray.@count"]);常用的集合操作:bash@avg,@max,@min,@count,@sum等
在KVC的基础上,苹果提供了KVO来获取属性改变的事件:添加KVO观察者:[_student
addObserver:self
forKeyPath:@"name"
options:
NSKeyValueObservingOptionNew
|
NSKeyValueObservingOptionOld
|NSKeyValueObservingOptionPrior
context:nil];观察者获取通知:-
(void)observeValueForKeyPath:(NSString
*)keyPath
ofObject:(id)object
change:(NSDictionary
*)change
context:(void
*)context{
NSLog(@"%@:%@:%@",
keyPath,
object,
change);
_nameLabel.text
=
[change
objectForKey:
NSKeyValueChangeNewKey];}5.
举例说明几个常用的Xcode环境变量。$(BUILT_PRODUCTS_DIR)构建成功后,目标文件存放的位置。$(TARGET_NAME)目标工程名。$(SRCROOT)工程文件存放的位置。$(CURRENT_PROJECT_VERSION)当前工程版本号。不应该对一个对象进行强引用。代理对象可能对被代理对象拥有强引用,如UITableViewController对它里面的tableView的引用。如果tableView的代理也是强引用的话,就会导致因为循环引用而出现内存泄漏。NSObject<-UIResponder<-UIView<-UIControl<-UIButton@synthesize编译器自动生成setter和getter。@dynamic需要手工实现setter和getter,并且不能在后面用=号标明对应的实例变量。@compatibility_alias给类起别名。@compatibility_alias
DVINewStudent
DVIStudent;@encode获取类型的字符串,可以用来判断类型。@encode(int)
//i@encode(CGRect)
//{CGRect={CGPoint=ff}{CGSize=ff}}@encode(DVIStudent)
//{DVIStudent=#}给对象发送延时执行的消息会对对象进行retain操作,并且在方法执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省科技项目合作协议书
- 2021-2022学年吉林省汪清六中物理高一第二学期期末考试模拟试题含解析
- 2021-2022学年湖南株洲市第十八中学高一物理第二学期期末监测试题含解析
- 2021-2022学年黑龙江省双鸭山市高一物理第二学期期末联考试题含解析
- 2021-2022学年河南省郑州市重点名校高一物理第二学期期末预测试题含解析
- 2021-2022学年河北保定市容城博奥学校高一物理第二学期期末预测试题含解析
- 华侨中学八年级上学期语文期中考试试卷
- 安徽省滁州市明光市2023-2024学年九年级上学期期中英语试题
- 浙江省中考模拟考试化学试卷附答案
- 北师大版八年级上册数学期末考试试卷含答案
- 侦查讯问策略与技巧
- 人体与环境教学课件
- 信息系统安全漏洞评估与修复方案项目实施服务方案
- 高一数学(必修1)知识点归纳训练(课后习题)
- 膏方可行性报告
- 2024年中国人寿:寿险甘肃分公司招聘笔试参考题库含答案解析
- 财务税务税务纳税人合规与管理培训
- 《环境工程学》课程思政培养生态环保意识与可持续发展能力
- Unit+2+大单元教学整体单元分析课件 人教版九年级英语全册
- 老年人嵌顿疝护理查房课件
- 事业单位会计制新旧衔接
评论
0/150
提交评论