NSObject
1.OC动态绑定和动态类型,我们需要使用到NSObject的以下方法:
1 /** 2 检测对象是不是 aClass 或其子类的成员 3 */ 4 - (BOOL)isKindOfClass:(Class)aClass; 5 6 /** 7 检测对象是不是 aClass 的成员 8 */ 9 - (BOOL)isMemberOfClass:(Class)aClass; 10 11 /** 12 检测对象是不是能够响应 aSelector 指定的方法 13 */ 14 - (BOOL)respondsToSelector:(SEL)aSelector; 15 16 /** 17 对象调用 aSelector 指定的方法 18 */ 19 - (id)performSelector:(SEL)aSelector; 20 21 /** 22 对象调用 aSelector 指定的方法,传递参数 object 23 */ 24 - (id)performSelector:(SEL)aSelector withObject:(id)object; 25 26 /** 27 对象调用 aSelector 指定的方法,传递参数 object1、object2 28 */ 29 - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
2.OC中的异常处理,也许你会用到如下代码块
1 @try { 2 // Code that can potentially throw an exception 3 } @catch (NSException *exception) { 4 // Handle an exception thrown in the @try block 5 } @finally { 6 // Code that gets executed whether or not an exception is thrown 7 }
下面来说明以上代码如何使用:
// 继承自 NSObject,有个方法 - (void)test; Man *man = [[Man alloc] init]; @try { [man test]; } @catch (NSException *exception) { [exception name]; NSLog(@"Catch exception: %@ %@", [exception name], [exception reason]); // 异常可以抛给服务器 } @finally { // code……… }
1 - (void)test { 2 NSLog(@"test --- "); 3 NSAssert(![self respondsToSelector:@selector(test)], @"Can't execute the method."); 4 }
我们在 Man 的方法中加了一个崩溃代码(测试使用)。
添加上异常处理代码之后,即使我们调用 - (void)test; 方法,程序也不会因此而崩溃。而回打印出异常的原因:
1 2016-04-02 16:36:56.113 OC测试[21899:1428201] test --- 2 2016-04-02 16:36:56.114 OC测试[21899:1428201] *** Assertion failure in -[Man test], /Users/liuxianzhi/Desktop/OC测试/OC测试/Man.m:15 3 2016-04-02 16:36:56.119 OC测试[21899:1428201] Catch exception: NSInternalInconsistencyException Can't execute the method.
因此,使用了异常处理之后,程序会变得更为健壮。
尊重作者劳动成果,转载请注明: 【kingdev】