首页 > 其他 > 详细

NSobject的复制以及其他一些类方法和实例方法的理解

时间:2014-10-10 22:26:35      阅读:268      评论:0      收藏:0      [点我收藏+]
copy和copyWithZone

@interface Animal :NSObject <NSCopying>  //在后面包含NSCOPYING协议 
在M文件中复制ANimal类中的对象.
- (id)copyWithZone:(NSZone *)zone                        //copy使用方法需要运行- (id)copyWithZone:(NSZone *)zone实例方法  
{
   Animal * animal =[[Animal allocWithZone]init];     //allocwithzone=alloc.意思一样 
   animal.weight=_weight;                                      //如果不让weight=_weight,则当愿animal.weight设值,复制的对象中
   return animal;                                                    //weight将无法获得
} 

 

NSObjec类中一些实用方法与类方法     
+ (void)load   //当类被加载到内存的时候自动调用一次
+ (void)initialize //在手动调用类里的任何方法前自动调用一次
-  (id)init    //初始化,然后return self,返回自身这个对象
+(instancetype)create  //创建一个类的对象,
1.  id,任意类型的对象指针,和instancetype没太多区别

2. instancetype不能作为普通的类型使用(不能用来定义变量)

3. instancetype会进行严格的类型检查

4.    初始化方法没用数目限制,
比如 - (id)inITwithAge:(int)age weight:(float)weight
{
self = [super inITwithAge:age weight:weight]
if(self){
}
return self;                                                   //他就会运用父类初始话的值而不进行自己的初始化等等.

5.  self在实例方法中表示调用该方法的对象,在类方法中,表示调用该方法的类

6.当使用%@做为格式化字符串,打印的不会是后面的字符串,而是后面 description的方法中的结果,打印出来的是类名与地址

7- (id)performSelector:(SEL)aSelector;  执行对象里的某个方法,,但是不会判断是否在头文件中声明


8-- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg NS_AVAILABLE(10_5, 2_0);
表示在新的线程中执行一个方法,就等于同步并列可执行两个,比如上个方法是死循环,那么不使用这个方法,则无法进行
如[dog1 performSelectorinbackground@selsector(brak)with:nil];

9 子类必须实现父类某个方法,用于报错,表示后面写的人必须重新写个bra的实现方法,主要用于多人合作中‘
-(void)brak
{
[self doesNotRecognizeSelector:@selector(bark) ];                   //表示提示子类必须实现父类的某个方法

10判断一个类是否实现了某个实例方法 
if ([Dog instancesRespondToSelector:@selector(brak)]) {           //判断一个类是否实现了某个实例方法
            NSLog(@"CollegeStudent实现了print方法");
        }

 


 

NSobject的复制以及其他一些类方法和实例方法的理解

原文:http://www.cnblogs.com/wangweixl/p/4017893.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!