首页 > 代码库 > NSobject的复制以及其他一些类方法和实例方法的理解
NSobject的复制以及其他一些类方法和实例方法的理解
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的复制以及其他一些类方法和实例方法的理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。