iOS UITableView扩展类,在其他类没有引用,为什么扩展类的方法还可以起作用?

iOS UITableView扩展类,在其他类没有引用,为什么扩展类的方法还可以起作用?

  • (void)load {

    // 只交换一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

    Method reloadData    = class_getInstanceMethod(self, @selector(reloadData));
    Method xy_reloadData = class_getInstanceMethod(self, @selector(xy_reloadData));
    method_exchangeImplementations(reloadData, xy_reloadData);
    
    Method dealloc       = class_getInstanceMethod(self, NSSelectorFromString(@"dealloc"));
    Method xy_dealloc    = class_getInstanceMethod(self, @selector(xy_dealloc));
    method_exchangeImplementations(dealloc, xy_dealloc);
    

    });
    }

2个回答

 Apple文档对load的discussion:“The load message is sent to classes and categories that are both dynamically loaded and statically linked, but only if the newly loaded class or category implements a method that can respond.”
 大意是,"load消息被发送给类和类别,动态加载和静态链接都是如此, 前提是新加载的类或类别实现了load方法"。
 虽然"UITableView扩展类,在其他类没有引用“,但是UITableView扩展类的load方法已经在它被加载的那个时刻执行了。而且,load方法只有在加载类和类别时被调用, 所以没有必要在load方法里用dispatch_once保证代码只执行一次。

这个要看你具体如何处理的,是不是有控件绑定了,然后它本身就会有一些自动刷新等事件

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IOS常用的扩展类
IOS常用的扩展类,包括UIImage、NSString、UIView等
iOS的类的扩展
简介除去继承的方法之外,Objective c 为程序员提供了类别(Category)和延伸(Extension)两大扩展机制。它们可以向类中添加成员函数,实现功能上的扩展。 在添加的函数中,可以访问类中所有的数据成员,该类的子类也将继承新加的成员函数。 类别允许将一个类的实现分布在几个不同的文件中,但在文件中只允许添加成员函数,而不能添加数据成员(要添加属性的数据成员,可以用associati
iOS OC07.2_类的扩展
类目//1.系统已经写好的类目:按照功能对系统的类方法进行区分 //leimucong@interface开始,后面是当前类的名字,类名后面是分类的功能,到@end结束 //2.我们创建的类目,一般是为了把系统的类进行功能扩充// NSString *str=@"2015-07-12 10:00:00"; // NSString *str2=@"2015-07-12 09
unity-扩展类的方法
再不使用继承的方式的情况下,扩展引擎类的方法 也是看了 DOTween 插件,才知道原来可以这样扩展引擎类。 一个 DOTween api的使用transform.DOMoveX(10, 3f).OnComplete(()=> { Debug.Log("Move Complete"); }); 新建一个静态类 MyExt ,加上一个静态方法 MyExtRot(要扩展的方法),方法 的第一个形参
类的扩展
类目的简单分析及事例应用
扩展类
类:rn[code=C#] public class TwoValueDictionaryrn rn private Dictionary innerdic = new Dictionary();rn public TwoValueDictionary()rn rnrn rnrn public void Add(Key key, FValue v1, SValue v2)rn rn innerdic.Add(key, new values() FirstValue = v1, SecondValue = v2 );rn rnrn public class valuesrn rn public FValue FirstValue get; set; rnrn public SValue SecondValue get; set; rn rnrn public values this[Key key]rn rn get rn return innerdic[key];rn rn set rn innerdic[key] = value;rn rnrn rn rn[/code]rn测试:[code=C#] //id--------name----------url------rn //1---------百度----------www.baidu.comrn //2---------谷歌----------www.google.com.hkrn //3---------腾讯----------www.qq.comrn TwoValueDictionary dic = new TwoValueDictionary();rn dic.Add(1, "百度", "www.baidu.com");rn dic.Add(2, "谷歌", "www.google.com.hk");rn dic.Add(3, "腾讯", "www.qq.com");rnrn for (int i = 1; i <= 3; i++)rn rn Console.WriteLine(string.Format("previous value is name:0, url:1", dic[i].FirstValue, dic[i].SecondValue));rn dic[i].SecondValue = "www.taobao.com";rn dic[i].FirstValue = "淘宝";rn Console.WriteLine(string.Format(" now value is name:0, url:1", dic[i].FirstValue, dic[i].SecondValue));rn rn Console.Read();rn[/code]
iOS类别可以扩展类的属性
一般来说类目用于扩展类的方法,不可以扩展属性,但是通过runtime是可以实现类属性的扩展 /** button的name */ @property (nonatomic,copy) NSString *name; static void *strKey = &strKey; - (void)setName:(NSString *)name{ objc_setAssociatedOb
iOS入门(二十一)类的扩展
类的扩展  NSDate     NSDateFormatter NSTimeinterval   用以表示以秒为单位的时间间隔 //    NSDate * date = [NSDate date]; //    NSLog(@"%@" ,date ); //    NSDate * nowDate = [[NSDate alloc]  initWithTimeIntervalSin
iOS类的扩展与继承、概念
//类别的作用:  //(1)将类别实现分散到多个不同文件或多个不同框架中 //(2)创建私有方法的前向引用 //(3)向对象添加非正式协议 //类别的局限性: //(1)无法添加新的实例变量 //(2)名称冲突,如果类别和现有的方法重名,类别具有更高的优先级,解决办法,类别方法名中添加一个前缀 Extension非常像是没有命名的类别 只
Swift iOS : 扩展类的属性
extension可以为类添加新的方法,但是如果想要添加数据成员的话就会被阻止,比如如下代码: extension Foo { var _title: String? var title: String? { get { return _title } set { _title = n...
weex ios扩展类的作用
1.Handler:主要是指iOS下的Protocal,例如WXImgLoaderProtocol,实现的是图片下载等能力,类比android则是Adpter,是WeexSDK为开发者提供的全局性扩展的处理器。例如导航,图片,网络等都有对应的Protocal来处理。 2.Module:主要是指非UI层面的处理模块,例如要调用摄像头、打开蓝牙、获取UUID等; 3.Component: 主要是指UI...
Java 可以扩展几个类
要扩展多个类,怎么办
visual studio2008扩展类的方法
using System;nusing System.Collections.Generic;nusing System.Linq;nusing System.Text;nnnamespace ConsoleApplication2nn class Delegatesn n public delegate bool NumPredicate(int num);n public static void Main()n n int[] number = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;n NumPredicate evenPredicate = IsEven;n Console.WriteLine("Call Iseven using a delegatevariable:0", evenPredicate(4));n List evenNumbers = FilterArray(number, evenPredicate);n DisplayList("Use IsEven to filter even numbers", evenNumbers);n List oddNumbers = FilterArray(number, IsOdd);n DisplayList("Use IsOdd to filter odd numbers:", oddNumbers);n List NumberOver5 = FilterArray(number, IsOver5);n DisplayList("Use IsOver5 to filter numbers over5:", NumberOver5);n n //end Main methodn private static List FilterArray(int[] intAr, NumPredicate pred)n n List result = new List();n foreach (int item in intAr)n if (pred(item))n result.Add(item);n return result;n // end method FilterArrayn private static bool IsOdd(int number)n return (number % 2 == 1); // end method IsOddn private static bool IsEven(int number)n return (number % 2 == 0); // end method IsEvenn private static bool IsOver5(int number)n return (number > 5); // end method IsOver5n n private static void DisplayList(string descript, List list)n n Console.Write(descript);n foreach (int item in list)n Console.Write("0 ", item);n Console.WriteLine();n Console.Read();n n n n public static class NumExtensionsn n public static void (this delegate adelegate);n nnnn要求:在该类原来具有的判断数组中的元素是奇数、偶数、大于5的数的基础上,不改变原来类的定义,而采取扩展类的方法,增加一个判断小于5的数的方法IsUnder5( ),然后对指定数组分别调用4个方法挑选出奇数子集、偶数子集、大于5的数的子集和小于5的数的子集并分别显示结果。
QString类arg方法扩展
在使用QString的arg方法时,是一件很方便的事情,例如: QString("%1,2%").arg("10").arg("20") //10,20 但是如果是下面的场景,对于这样场景我们期望得到的结果是:%2,20。 QString("%1,%2").arg("%2").arg("20") //20,20 实际中肯定不会这么简单啦,因为arg()方法的参数在运行期间有可能是任何值,...
MFC扩展类.rar
收集的mfc常用扩展类,是好东西,要顶~~
正则表达式扩展类
自己写的 考虑的比较全
怎么扩展这个类
这个是我看到的一个人的问题,没有得到很好的回答。希望大牛帮忙想想。谢过!!! 比如有两个类: class A{ } class B{ public static A createA(); } 类A不能直接实例化,如 A a = new A(); 禁止象上面直接实例化, 而必须通过B的方法来创建A,如: A a = B.createA(); 就是说: ...
NSString的扩展类
 NSString+XMLExtensions.h   #import &amp;lt;UIKit/UIKit.h&amp;gt; @interface NSString(XMLExtensions) + (NSString *) encodeXMLCharactersIn:(NSString *)source; + (NSString *) decodeXMLCharactersIn:(NS...
关于UIlabel类的扩展
请搞懂项目中的UIlabel类扩展了哪些功能,如何扩展的。
请教有关类的扩展
我想扩展一个类,比如button,可是我怎么知道它的原来的方法、属性等相关信息?rn以便覆盖它原来的某些方法!
扩展RequestProcessor类.
java源文件.rnpublic class MyStore extends org.apache.struts.action.RequestProcessorrn rn protected boolean processPreprocess(rn HttpServletRequest request,rn HttpServletResponse response) rn rn tryrn request.getRequestDispatcher("/error.jsp").forward(request,response);rn catch(Exception ex)rn ex.printStackTrace();rn rn return false;rn rnrn------------------------------------------------------------------------------------rnrnrnrnrnrnrn rn rn rn rn rn rn rnrn rn rn rnrn rn rn rn rn rn rn rn rn rn rn rn rnrn rn rn rn rnrn---------------------------------------------------------------------------rn配置文件,我主要是扩展RequestProcessor类,在用户请求时,他直接定向去error.jsp页面.rn但是一运行就提示.Servlet action is not available.rn如果不扩展它的话,就运行正常.
uploadFile 扩展类的使用
在thinkphp框架中常用的文件上传扩展类UploadFileAction.class.php
iOSDay19之OC类的扩展
为一个类扩展功能:1.子类化;2.修改源代码;3.定义协议;4.Category:类目 1、Category                                                                               1> Category的作用 Category:也叫分类,类目,是为没有源代码的类扩充功能。 扩充的功能会成为原有类的一部分,
Laravel5的LaravelBlade扩展类
Laravel 5的Laravel Blade扩展类
swift-RxSwift的助手类和扩展
RxSwift的助手类和扩展
包装类和扩展类
用户的扩展类还是基于用户的,因为用逆向工程生成的用户类 不宜修改,所以我们可以自己搞一个扩展类,继承用户类,进行扩展. 用户的包装类,就不单单是基于用户的了,根据业务需求进行包装,包装类里可以放很多属性.不需要继承某一实体类.常用于返回值类型 ...
扩展类转化成父类
/** * 扩展类转化成父类 * * @param sour * @param clazz * @param filters * @return  * Object * @exception/throws */ public static Object copyBean(Object sour, Class clazz) { Object target = null;  
OC-10.类的扩展
一. 类目 category 1. 自定义类:  书写位置: .h文件下方声明 .m文件下方实现 调用 2. 系统类: 创建文件(.h和.m文件) 调用 3. 类目的作用以及特点 二. 延展 extension 1. 在.m文件上方声明(也可以不声明) 实现写在本类方法实现的位置
Objective-C 类的扩展
类功能的扩展Category 概念:category也叫分类,类目,是为美元源代码的类扩展功能,扩充的功能会成为源代码的一部分,可以通过原有类或者原有类的对象直接调用,并且可以被继承; 注意事项:该方法只能扩充方法,不能扩充实例变量 类目中使用类方法比较多 使用方法 首先我们需要创建一个category文件 选择M标签的file文件 选择创建文件格式 选择category类型 得到我们需要的两个
WebBrowser扩展类IEBrowser
WebBrowser的扩展类,可以加载自定义脚本
oc第七天:类的扩展
⼀、掌握NSDate的使⽤ NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的 时刻(含⽇期,时间,时区)。 使⽤+date⽅法获取当前时间 例如:NSDate *nowDate = [NSDate date]; 注意NSLog(@“%@”,nowDate);⽆论你是哪个时区的时间,打印时总 是打印对应的0时区时间。 NSTimeInterval(即dou
扩展已知类的功能
扩展已知类的功能 1.采用子类 缺点: a、与具体类相关联: 如果继承了该类,那么使用范围就会被固定 继承了Connection,只能在mysql数据库中使用,在其他数据库就使用不了了 b、有些不能继承 c、信息不全 2.采用包装类(装饰者设计模式) 装饰者设计模式的步骤: 1. 在装饰类的内部维护一个被装饰类的引用。 2. 让装饰类有一个共同的父类或者是父接口。
UIView的扩展类
ExtUIView.h   @interface UIView (autoresizing) //带margin的左中右层 - (void) addSubviewLeft:(UIView *)leftView middleView:(UIView *)middleView rightView:(UIView *)rightView lefWidth:(CGFloat)lefWidth ...
thinkphp5--自定义扩展类
1.在extend目录下新建要定义的扩展类:如下图所示 2.定义扩展类的内容 <?php namespace org; /** * */ class Auth { public function __construct() { # code... } publi
C# 类的扩展
类的扩展必须使用静态类,和静态函数  。 被扩展的类型为this后面类型,quyu函数为int,这样就相当于给int类型增加了一个成员函数。sishewuru函数为double,此时相当于为double类型增加了一个成员函数  static class SSS     {         public static int quyu(this int i,int x)        
使用Category扩展类
本课程主要介绍了Objective-C中的核心特性,以及Foundation Framework的核心API。
禁止类的扩展
本课程将深入讲解Javascript的各种技术,让学员可以利用Javascript编写出非常复杂的程序。本课程也是React Native、Cocos2d-js、Unity3D、PhoneGap、Web等技术的前导课程。
03const在类中的扩展
这是一套全面而系统的C++学习教程: 1,C++对C的全面提高(类型增强,函数重载,默认参数,引用,new/delete 内联函数,类型强转,命名空间,系统string类。2,封装,类与对象,友元,运算符重载。 3,继承与派生,多态,UML,设计模式。4,文件IO流,模板,STL,异常机制。
PHP-----fpdf扩展类的使用
这是一个相关的php扩展类fpdf适用于打印技术的支持
OC_类的扩展
// 1.声明协议 // @protocol协议关键词***Girl.h***@protocol Marry <NSObject> // 协议的内容 // 方法声明 // @required是必须实现的方法,默认必须实现 // @optional是可选择执行的方法 @required - (void)makeMoney; @optional - (void)cook;// 2.设置代理人属性@pr
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法