iOS 进阶之路 2
来源:互联网 发布:网络与信息安全论文 编辑:程序博客网 时间:2024/06/03 19:39
1.属性
assign : 纯量类型 例如 : CGFloat
strong : “拥有关系” 为这种属性设置新值时候,设置方法会先保留新值,并释放旧值,然后将新值设置上去
weak : “非拥有关系” 为这种属性设置新值时候,既不保留新值,也不释放旧值。属性所指的对象遭到摧毁时,属性值也会清空
unsafe_unretained : 不安全,当目标对象遭到销毁时,属性值不会自动清空,这一点和weak有区别
copy : 与strong类似,然而设置方法并不保留新值,而是将其 copy
2.在对象内部尽量直接访问实力变量
比较合理折中的方案: setter 方法时 用 self.xxx 因为这样可以控制对属性的写入操作;getter 方法时 最好用 _xxx 直接访问。
对于不经常用到的可以使用懒加载 访问
3.对象等同性:
想检测对象的等同性,请提供“isEqual:” 与 hash 方法
可以为自己的特定类定制等同性方法
- (BOOL) isEqualToPerson:( Person* )otherPerson{
if ( self == object ) return YES;
if ( ! [ _firstName isEqualToString:otherPerson.firstName ] ){
return NO;
}
…..
return YES;
}
4.“类族模式”
typededf NS_ENUM( NSUInteger, MKMYEmployeeType ){
MKMYEmployeeTypeDeveloper,
MKMYEmployeeTypeDesigner,
MKMYEmployeeTypeFinance,
};
+( MKMY )employeeWithType:( MKMYEmployeeType )type{
switch ( type ){
case MKMYEmployeeTypeDeveloper :
return [ MKMYEmployeeTypeDeveloper new ];
break;
case ...
// 在switch判断是枚举类型的时候,最好不用用defualt,因为这样在新增加枚举类型的时候,Xcode会报出警告
}
5 runTime语句
(1)发送消息: id returnValue = objc_msgSend( someObject,
@selector( messageName: ),
parameter);
第一个参数表示消息的接受者,第二个参数代表选择子,后续可以传多个参数
(2)“黑盒测试” : 交换方法 void method_exhangeImplementations( Method m1, Method m2 )
此函数的两个参数表示待交换的两个方法实现,方法的实现:
Method class_get女生探测Method( Class aClass , SEL aSelector )
0 0
- iOS 进阶之路 2
- iOS 进阶之路
- iOS进阶之路
- IOS的进阶之路
- iOS 进阶之路 1
- iOS的进阶之路
- iOS开发高手进阶之路
- iOS初级开发工程师进阶之路
- iOS进阶之路中手机定位
- iOS开发高手进阶之路
- ios进阶之CALayer
- IOS 进阶之 WKWebView
- iOS进阶之路之__bridge、__bridge_transfer和__bridge_retained
- iOS开发进阶之单元测试
- iOS开发进阶之单元测试
- iOS开发进阶之图说
- IOS进阶之AudioToolBox.framework
- IOS进阶之AdSupport.framework
- php 计算程序的执行时间
- string与wstring转换
- No_16_0328 Virtex6 PCIe2.5 仿真学习
- C# .net 抓取网页内容
- java变量
- iOS 进阶之路 2
- mysql 将null转代为0(以及一些特殊用法)
- SQL 语句中 表与条件顺序 与效率
- 通过maven构建一个java项目
- ORM框架分析之DB到Entity的映射(三)
- 【BZOJ4196】[Noi2015]软件包管理器【树链剖分】【线段树】
- activemq的几种基本通信方式总结
- 将博客搬至CSDN
- Java泛型中E、T、K、V等的含义