zoukankan      html  css  js  c++  java
  • IOS基础之 (十五)知识点

    一 SEL

    1. 方法的存储位置

    每个类的方法地址列表都存储在类对象中。

    每个方法都有一个与之对应的SEL类型的对象。

    根据一个SEL对象就可以找到方法的地址,进而调用方法。

    Person.h

     1 #import <Foundation/Foundation.h>
     2 
     3 @interface Person : NSObject
     4 
     5 + (void) test1;
     6 
     7 - (void) test2;
     8 
     9 - (void )test3:(NSString *) abc;
    10 
    11 @end

    Person.m

     1 #import "Person.h"
     2 
     3 @implementation Person
     4 
     5 + (void)test1{
     6     NSLog(@"调用方法test1 ---
    ");
     7 }
     8 
     9 - (void)test2{
    10     NSLog(@"调用方法test2 ---
    ");
    11 }
    12 
    13 - (void)test3:(NSString *)param1{
    14     NSLog(@"调用方法test3 ---%@", param1);
    15 }
    16 
    17 @end

    main.m

    1 [p test2];
    2     
    3 [p performSelector:@selector(test2)];
    

    第1行 第一种方式:直接通过p对象调用test2方法。

    第2行 第二种方式:间接调用 test2方法。

    1)把test2包装成SEL类型的数据。

    2)根据SEL数据找到对应的方法地址。

    3)根据方法地址调用对应的方法。

    1 [p test3:@"123"];
    2 
    3 [p performSelector:@selector(test3:) withObject:@"123"];
    4 
    

    第1行:p 类直接调用带参数的方法test3.

    第3行: p类间接调用带参数的方法 test3,注意间接调用带参数的方法时,使用 @selector(方法:)的形式调用。

    1 NSString *name = @"test2";
    2 SEL s2 = NSSelectorFromString(name);
    3 NSLog(@"%p" , s);
    4 NSLog(@"%p" , s2);

     

  • 相关阅读:
    解决IE6浏览器下position:fixed固定定位问题
    CSS中overflow:hidden在ie6、ie7无效不能隐藏解决办法
    liunx 中删除export设置的环境变量
    文件操作
    集合操作
    三级菜单
    字典操作
    字符串操作
    购物车程序
    列表操作
  • 原文地址:https://www.cnblogs.com/wangshuo1/p/5423370.html
Copyright © 2011-2022 走看看