ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> IOS开发 >> iOS 进阶之路 2

iOS 进阶之路 2

来源:网络整理     时间:2016-03-29     关键词:

本篇文章主要介绍了"iOS 进阶之路 2",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 1.属性assign : 纯量类型 例如 : CGFloatstrong : “拥有关系” 为这种属性设置新时候,设置方法会先保留新,并释放旧,然后将新设置上去...

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 )

以上就介绍了iOS 进阶之路 2,包括了方面的内容,希望对IOS开发有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_531269.html

相关图片

相关文章