首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS基础理论(三)

b.调用forwardingTargetForSelector:方法,尝试找到一个能响应该消息的对象。如果获取到,则直接把消息转发给它,返回非 nil 对象。否则返回 nil ,继续下面的动作。...所以不能向存在的类中添加实例变量; 运行时创建的类是可以添加实例变量,调用class_addIvar函数。...在一次完整的运行循环结束之前,会被销毁。 那什么时间会创建自动释放池?运行循环检测到事件并启动后,就会创建自动释放池。 子线程的 runloop 默认是不工作,无法主动创建,必须手动创建。...如果可以手动实现这些调用,就可以实现“手动触发”了。 那么“手动触发”的使用场景是什么?一般我们只在希望能控制“回调的调用时机”时才会这么做。...一般我们只在希望能控制回调的调用时机时才会这么做。大部分情况下,改变通知会自动调用。

59730

Java语法手册 三(面向对象)

中创建一个类 要使用: class,一个类名,一对大括号{}; 类的属性: 在类主体中定义变量来描述类的静态特征(属性) 这些变量称为类成员变量; 在方法中的变量称为局部变量 编写类的方法: 在类中 定义方法描述类所据有的行为...(局部) 成员变量: 在类中定义的变量,有访问修饰符 局部变量: 它的作用域主要定义在方法/{ } 因此只能在定义的方法/{ }使用,因此也就没有访问修饰符; 注意: 作用域不同: 局部变量...可以有相同方法名 并且在 使用时 局部变量具有更高的 优先级; 程序遵循就近原则!...实例变量: 我们创建多个类对象,每个对象都有一套,类中的非静态属性;当修改其中一个对象中 的,非静态属性时,不会导致改变其它对象中的属性值; 静态变量: 我们创建多个类对象,多个对象共享同一个静态变量...语法: { ... } 类中出现 { } 实例对象时触发 优先于构造函数; (类每: new 类(); //每创建对象时就调用一次) 构造代码块与构造函数的区别: 构造代码块是给所有对象进行统一初始化

8510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    说说 JVM 的类加载机制『非专业』

    类加载机制 类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。 类的生命周期 ?...验证 格式验证:验证是否符合class文件规范 语义验证:检查一个被标记为final的类型是否包含子类;检查一个类中的final方法是否被子类进行重写;确保父类和子类之间没有不兼容的一些方法声明(比如方法签名相同...创建对象 假设是第一次使用一个类的话,那么需要经过上述的类加载的过程,之后才是创建对象。...(第一执行类中的静态代码,包括静态成 员变量的初始化和静态语句块的执行;第二执行类中的非静态代码,包括非静态成员变量的初始化和非静态语句块的执行,最后执 行构造函数。...在继承的情况下,会首先执行父类的静态代码,然后执行子类的静态代码;之后执行父类的非静态代码和构造函数; 最后执行子类的非静态代码和构造函数) 「4、如果有类似于Child c = new Child()

    42540

    Java知识面试题复习(二)Java基础语法

    访问修饰符 访问修饰符 public,private,protected,以及不写(默认)时的区别 定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。...分类 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。...用于修饰类、属性和方法; 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的...final finally finalize区别 final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表 示该变量是一个常量不能被重新赋值。...2、在该类被第一次加载的时候,就会去加载被static修饰的部分,而且只在类第一次使用时加载并进行初始化,注意这是第一次用就要初始化,后面根据需要是可以再次赋值的。

    32920

    Java基础-甲骨文系列

    详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。...使得某个方法或属性与类而不是对象关联在一起,即在不创建对象的情况下可通过类直接调用方法或使用类的属性。 具体而言static又可分为4种使用方式: 修饰成员变量。...static修饰的方法无需创建对象就可以被调用。static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和静态成员方法。 修饰代码块。...Exception可分为运行时异常和非运行时异常。对于运行时异常,可以利用try catch的方式进行处理,也可以不处理。对于非运行时异常,必须处理,不处理的话程序无法通过编译。...第一次调用put方法时,会将阈值赋值给容量,然后让阈值=容量x负载因子,因此并不是我们手动指定了容量就一定不会触发扩容,超过阈值后一样会扩容!!

    84710

    Java基础知识点总结

    default 被default修饰的成员可在本类所在包中使用。可以用来修饰变量、方法、类、接口。 (1) 默认的(友好的),不写任何的访问修饰符。...、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值 finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法写在...用静态关键字和非静态关键字的区别 关于static变量和非static变量的区别 关于static和非static变量的区别 static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化...static修饰的变量在加载的时候先于main方法加载在内存中的数据共享区-------方法区,而非static的变量在加载的时候,是要创建变量才加载在堆内存中的。...引用传递(pass by reference)指的是在实际的函数调用时,将实际参数的地址传递给函数的形式参数,也就是说其实形参和实参保存的是堆中同一个对象的地址。

    59230

    Python3 | 练气期,面向对象、类魔术方法,类修饰器!

    方法:类中定义的函数。 属性:类变量或者实例变量用于处理类及其实例对象的相关的数据。 类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,注:类变量通常不作为实例变量使用。...局部变量:定义在方法中的变量,只作用于当前实例的类。 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。...实例化:创建一个类的实例,类的具体对象。 对象(Object):通过类定义的数据结构实例,对象包括两个属性(数据成员类变量和实例变量)和方法(由函数构成)。...9.类修饰符(装饰器) 描述:在 Python 中,类修饰符(Class Decorators)是用于修饰类的函数。它们可以用来修改类的定义或者扩展类的功能。...基础示例 示例1.例子中,log_class 修饰符通过创建一个新类 Wrapped 来扩展原始类 MyClass,在实例化时打印日志信息。 #!

    19110

    Java的面向对象

    3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。 4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。...在调用定义的类中方法时,需要用到类名开辟空间(  类名+对象名=new+类名【类名+对象名=new+类名】)及其运用, 不同对象都有自己特有的值,都可以调用类中的通用方法, 第一次创建对象时,第一次类会加载一次...局部变量:作用于当前方法中(代码块中) 成员变量:作用于整个类中的方法 局部变量在栈内存中 成员变量在堆内存中 成员变量的作用时间:从当前对象创建到销毁 局部变量的作用时间:当前方法的执行到结束...属性分为:静态属性(类变量)和非静态属性(实例变量)。 static修饰方法时只能访问被修饰的属性(在静态的方法中不能访问非静态的属性)。 在静态的方法中不能访问非静态的方法。...在静态方法中不能使用this。 非静态的方法需要创建对象来访问类中的方法,而静态的方法可以直接用类名来访问或者使用对象名。 对象名.方法名 或 类名.

    67550

    【Android】Fragment懒加载和ViewPager的坑

    进一步封装 题主稍微进行了一些封装,自定义了一个新的回调函数 onFragmentVisibleChange(boolean isVisible) ,可以实现的效果有: 1、只有两种情况会触发该函数...另外,因为ViewPager缓存机制,所以题主进行了view的复用,防止onCreateView()重复的创建view,其实也就是将view设置为成员变量,创建view时先判断是否为null。...)和onDestroy并不会触发,所以关于变量的初始化和赋值操作可以在onCreate()里进行,这样就可以避免重复的操作。...ViewPagerFragment extends Fragment { /** * rootView是否初始化标志,防止回调函数在rootView为空的时候触发 */...可见状态发生变化时会回调该方法 * 如果当前fragment是第一次加载,等待onCreateView后才会回调该方法,其它情况回调时机跟 {@link #setUserVisibleHint

    2K20

    C#关键字常见面试题

    静态类与非静态类的区别? 静态类无法实例化(换句话说,无法使用 new 运算符创建类类型的变量。由于不存在任何实例变量,因此可以使用类名本身访问静态类的成员)。...静态变量适合全局变量的定义。 静态方法和非静态方法区别(优/缺点)? 优点 属于类级别的,不需要创建对象就可以直接使用。 全局唯一,内存中唯一,静态变量可以唯一标识某些状态。...在类加载时候初始化,常驻在内存中,调用快捷方便。 缺点 静态方法不能调用非静态的方法和变量。(非静态方法可以任意的调用静态方法/变量) 不可以使用 this 引用 static 方法或属性访问器。...它可以用来区分局部变量和实例变量、在构造函数中调用其他构造函数、传递当前对象给其他方法等。 base 关键字有什么作用? base 关键字表示基类的引用,可以用于访问基类的成员。...ref 指定此参数由引用传递,指定的参数在函数调用时必须先初始化(有进有出)。

    17310

    HarmonyOSOpenHarmony 双击返回与退出App

    接下来我们就来看一下组件声明周期 aboutToAppear aboutToAppear函数在创建自定义组件的新实例后,在执行其build函数之前执行。...允许在aboutToAppear函数中改变状态变量,更改将在后续执行build函数中生效。 aboutToDisappear aboutToDisappear函数在自定义组件析构销毁之前执行。...不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。...onPageShow 页面每次显示时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry修饰的自定义组件生效。...onPageHide 页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry修饰的自定义组件生效。

    1.5K30

    .NET开发工程师的常见面试题

    方法的参数签名是指方法的参数个数、参数的数据类型、参数是否有ref、out、params修饰(方法的返回值类型不属于方法的参数签名)。 构造函数是否可以被继承?是否可以被重写?...不能被继承,也不能被重写,但是在创建类的实例时会首先调用其基类的无参数构造函数。 C#中,运算符“?”和“??”的区别是什么? ?是和:结合在一起使用的,?...readonly:表示只读字段,其修饰的字段的值是在运行时计算的,在对象的实例构造函数或类的静态构造函数首次被调用时计算,之后字段的值便不能被更改。 C#中,new有几种用法?...1) 用于创建对象和调用构造函数。 2) 用于创建匿名类型的实例。 3) 在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。...创建XMLHttpRequest对象 调用open方法初始化请求 设置回调函数 发送请求 GET 和 POST 请求的优缺点 (1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、

    5.5K30

    Java面试之关键字

    :被它修饰的类不能被继承 成员变量 static:类变量:类变量是指不管该类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量...无法重写被private修饰的方法,因为被private修饰的父类方法在子类中是不可见的 静态类型有什么特点 静态变量是和类绑定到一起的,而不是类的实例对象。每一个实例对象都共享同样一份静态变量。...非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。 简单来说:静态属性随着类的加载而加载,静态类不能创建对象,直接用类名来调用 main() 方法为什么必须是静态的?...所以main方法一定是静态的,有类就可以得到执行,进而有更多的静态方法或者非静态方法得到执行 是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用 不可以,静态函数中不能访问非静态成员变量...为什么静态方法不能访问成员变量(建议自己用代码尝试一下) 成员方法可以访问静态变量,静态方法不能访问成员变量的原因是因为:被static修饰的属性和方法会随着类的加载而存在,而非静态成员变量则是在该类被创建对象之后才会初始化

    646100

    C# .NET面试系列二:面向对象

    静态构造函数只会执行一次,且在类被第一次使用之前执行。子类的静态构造函数(如果有):接着执行子类的静态构造函数。同样,静态构造函数只会执行一次,且在类被第一次使用之前执行。...需要注意的是,静态成员初始化和静态构造函数只会在类第一次被使用时执行,而实例构造函数和非静态成员初始化在每次创建实例时都会执行。这确保了类在使用前得到正确的初始化。7. 接口是否可继承接口?...重写涉及到基类和派生类之间的关系,基类中的虚方法在派生类中被重新实现。重载是编译时的多态性,根据调用时提供的参数类型来确定调用哪个方法。重写是运行时的多态性,根据对象的实际类型来确定调用哪个方法。...重载和重写分别应用于不同的场景,取决于你解决的问题是在类内提供多个版本的方法(重载)还是在继承体系中提供对基类虚方法的新实现(重写)。17. 静态方法可以访问非静态变量吗?如果不可以为什么?...如果在静态方法中需要访问非静态变量,有以下两种常见的解决方法:通过实例进行访问:在静态方法中创建类的实例,然后通过实例访问非静态变量。

    25510

    JavaSE继承和多态

    : 只能在类的非静态方法中使用,用来访问非静态成员方法和字段 在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在 不同点: this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性...成员变量虽然继承到子类中,但子类不能直接访问 在继承中,如果想让父类的成员属性或者方法可以让子类直接访问,而其他类不能访问,可以对成员属性或者方法使用protected修饰 总之,类要尽量做到 “封装”...,当传递不同类对象时,会调用对应类中的方法 2、重写 重写概念: 重写(override):也称为覆盖,子类重写父类函数,对父类函数进行覆盖 重写是子类对父类非静态、非private修饰,非final修饰...、构造方法都不能被重写 重写的方法, 可以使用 @Override 注解来显式指定,可以校验是否重写了父类函数 重写和重载的区别: 区别点 重写(override) 重载(override) 参数列表...代码的运行效率降低 属性没有多态性,当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性 构造方法没有多态性,在构造器中调用方法(如果这个方法被子类重写, 就会触发动态绑定, 但是此时子类对象还没构造完成

    29720

    Tip | Android的Service相关知识提炼

    onCreate():服务第一次被创建时调用 onStartComand():服务启动时调用 onBind():服务被绑定时调用 onUnBind():服务被解绑时调用 onDestroy():...Service的类(MyService)中 实例化继承Binder的内部类(MyBinder)实例 并作为MyService的成员变量; 重写onBind()方法,返回成员变量MyBinder实例;...在onServiceConnected()方法中, 又通过向下转型得到了MyBinder的实例, 有了它就可以在活动中调用MyBinder中的任何非private方法了, 即实现Service与Activity...这样当定时任务被触发的时候, 广播接收器中的onReceive()方法即可得到执行, 在onReceive()方法我们可以再次启动Service, 同时编写任务执行代码块; 实战使用时, 可以在新建的继承...且必须在其内部调用父类的有参构造函数; 然后重写onHandleIntent()方法, 里面可以处理一些耗时操作而不用担心 ANR的问题, 因为这个方法已经是在子线程中运行的了。

    65150

    鸿蒙开发之android开发人员指南《基础知识》

    可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI界面展示。...(): voidaboutToAppear函数在创建自定义组件的新实例后,在执行其build函数之前执行。...aboutToAppear不同于onPageShow的地方在于该函数仅会在自定义组件实例创建后执行一次。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build函数中生效。...aboutToAppear函数可以用于接收自定义组件实例创建时的状态参数,初始化页面状态变量等。aboutToDisappear: aboutToDisappear?...(): voidaboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

    25720

    有史以来最全的异常类讲解没有之一!第三部分爆肝4万字,终于把Python的异常类写完了!最全Python异常类合集和案例演示,第三部分

    案例 下面的代码尝试通过修改 Python 的内部数据结构来模拟触发 SystemError 的场景。请注意,这种做法是非常危险和不推荐的,因为它可能导致 Python 解释器崩溃或行为异常。...ValueError更可能是在float转换时抛出,比如输入为'abc'这样的非数字字符串 # 测试函数,传入一个有效的数字字符串 valid_input = "16" print(...number = float(input_string) 尝试将输入字符串转换为浮点数。如果转换失败(例如,输入字符串包含非数字字符),Python 将抛出 ValueError。...尝试使用 ‘ascii’ 编码编码非 ASCII 字符时,编码函数触发了 UnicodeEncodeError 并被捕获,打印了错误信息。...测试使用被弃用的函数: 调用 use_deprecated_function() 两次,以演示警告的显示和 ‘once’ 过滤器的效果。 第一次调用时会显示警告,第二次调用时不会重复显示。

    10200
    领券