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】

posted @ 2016-04-02 16:45  Kingdev  阅读(155)  评论(0编辑  收藏  举报