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

在Objective C中为实例变量赋值

在Objective-C中,为实例变量赋值通常是在初始化方法中进行的。初始化方法是一个特殊的方法,用于在创建对象时设置其初始状态。在Objective-C中,初始化方法的命名约定是以“init”为前缀,后面跟着描述方法所属类的名称。例如,一个名为“MyClass”的类的初始化方法可能是“initWithX:andY:”。

在初始化方法中,可以使用“self”关键字来引用当前对象,并使用点符号(.)访问实例变量。例如,要为名为“_x”和“_y”的实例变量赋值,可以使用以下代码:

代码语言:txt
复制
- (instancetype)initWithX:(int)x andY:(int)y {
    self = [super init];
    if (self) {
        _x = x;
        _y = y;
    }
    return self;
}

在这个例子中,我们首先调用父类的初始化方法(“super init”),然后将传递给当前初始化方法的“x”和“y”参数的值分别赋给实例变量“_x”和“_y”。

注意,在Objective-C中,实例变量通常以下划线(_)为前缀。这是一种命名约定,用于区分实例变量和局部变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C 中变量的作用域 原

iOS中,修饰变量的关键字有四个,分别是:  1  @public  被这个关键字修饰的变量是完全开放的,只要有这类的对象存在,就可以访问到这个变量。...2  @protected 被这个关键字修饰的变量是受保护的,只有在声明变量的这个类中和它的子类中,可以访问。  ...3  @private 被这个关键字修饰的变量是私有的,只能在声明这个变量的类中使用,子类也不能使用。  ...4  @package 这个关键字比较难理解,大致意思是被修饰的变量是封装的,在本框架内可以自由使用,效果和@public 相同,而在框架外不能使用,其子类也不能使用,效果又相当于@private。...一点扩展: 访问类中的变量,我们可以用->符号,它和点语法的区别在于,点语法实际上是调用的set与get方法,而->符号是直接访问变量。 专注技术,热爱生活,交流技术,也做朋友。

55820

java中为final变量赋值的几种方式

参考链接: 在Java中为静态最终static final变量分配值 java中为final变量赋值的几种方式  前言   使用final修饰变量,很多人第一时间想到的就是不可变。...然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修改的变量的赋值问题。 ...储备知识:在类的加载中,类的加载顺序我们应该都知道,静态代码块->构造代码块->构造方法  精华:   当类被加载进内存的时候,这个属性只是声明了一个变量,并没有给分配内存空间,只有当类在被实例化的时候才分配了内存空间...被final修饰的变量  1、在定义时直接赋值  public class Test {     public final String str = "mark"; } 2、声明时不赋值,在构造方法中进行赋值...(因为倘若是set方法赋值,线程是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次)  被final static修饰的变量  1、在定义时直接赋值  public class Test

2.5K10
  • 在Objective-C中浅谈面向对象

    接触面向对象也有一段时间了,当时是通过C++学习的OOP,后来又接触到了PHP和Java。...@interface 和 @end是成对出现的,@end代表接口定义的结束             6.上面得成员变量定义成了公有的,这在开发中是极少见的,这里为了方便练习才这么写的,一般把成员变量定义为私有的然后在定义...alloc ] init ];   或者     ​    ​    ​    ​类名    ​*对象名 = [ 类名  new];     ​    ​  给对象的成员变量赋值和调用对象的方法如下:...,减号开头的方法为对象方法,需要实例化类后通过对象来进行调用。..., id是OC中的一切父类.在面向对象中父类可以声明子类的变量     ​    ​    ​    ​    ​3.

    1.1K60

    【小家java】java中为final变量赋值的几种方式

    精华部分: 当类被加载进内存的时候,这个属性并没有给其分配内存空间,而只是定义了一个变量,只有当类被实例化的时候这个属性才被分配内存空间,而实例化的时候同时执行了构造函数,所以属性被初始化了,也就符合了当它被分配内存空间的时候就需要初始化...先看第一种情况的变量 被final修饰的变量:三种赋值方式 在定义时直接赋值。...声明时不赋值,在constructor中赋值(最常用的方式) 声明时不赋值,在构造代码块中赋值 如果一个非final成员变量在定义的时候没有赋值,那么它只可能在构造函数里被赋值了(不考虑构造代码块的情况...(因为倘若是set方法赋值,现在是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次) 被final static修饰的变量:两种赋值方式 在定义时直接赋值....在静态代码块里赋值 最后 final变量会经过JVM进行优化处理,所以平时使用过程中建议使用final变量。但更建议读者先重点了解下final变量在JVM中的内存结构后,再频繁使用为佳

    2.8K40

    属性“__attribute__”在Objective-C中的应用

    属性“__attribute__”在Objective-C中的应用       关于__attribute__,你可能用的不多,但是一定经常见到,在系统的Foundation框架中,__attribute...8. objc_requires_super       这个属性用来修饰Objective-C中父类的方法,如果子类进行了重写,在重写的方法中没有调用父类方法,则会进行编译器提示。...10. overloadable       在C语言中,对于相同的函数名,哪怕参数不同,也不能够重复定义。...overliadable属性可以指定某个函数为可重载,这样既可定义名字相关参数不同的多个C函数,在调用时,编译器会根据传入的参数类型自行判断具体调用哪个函数,如下: ?...11. objc_runtime_name       这是一个很有趣的属性,其可以运行时改变Objective-C类的类名,但是不会影响其行为。

    2.4K20

    【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一、直接修改 和 间接修改 指针变量 的值 二、在函数中 间接修改 指针变量 的值 三、在函数中 间接修改 外部变量 的原理 一、直接修改 和 间接修改 指针变量 的值 ---- 直接修改 指针变量...的值 , 就是为其赋值一个地址值 , 使用 & 取地址符 , 将变量地址赋值给指针变量 , 或者使用 malloc 函数分配内存赋值给 指针变量 ; // 将变量地址赋值给一级指针 p...间接修改 指针变量 的值 ---- 在 函数 中 间接修改 指针变量 的值 , 将 指向一级指针 的 二级指针 变量 , 传递到 函数形参 中 , 在 函数中 , 使用 * 符号 , 修改 二级指针...p2 = &p; // 间接修改指针的值 *p2 = 12345678; // 打印一级指针地址 printf("%d\n", p); // 在函数中 ,...三、在函数中 间接修改 外部变量 的原理 ---- 如果要 修改 一级指针 的值 , 必须 传入 指向 一级指针 的 二级指针 变量 才可以 , 传入一级指针变量 , 不能修改一级指针变量值 ; 这是因为

    21.4K11

    .c中变量必须定义在执行语句前面

    废话不多说,先看下面代码: int main() { int a =1;     a = 2;     int b = 3; } 如果你将这段代码保存在.c文件下,在vc++6.0中去编译...这是C标准的问题: C98中规定,所有的局部变量必须定义在每个块的开头,即必须定义在所有的执行语句之前(上面的int a=1;定义了一个局部变量,而a=2;则表示将变量重新赋值为2,所以是执行语句,在执行语句之后的...但在C99以及C++中则没有这个限制,即在首次使用之前,可以在块的任何位置声明变量。 这就解释了在.c下报错,而在.cpp下不报错。...有两个思路: 第一,在.c文件中严格按照C98的规范来操作变量(这个思路不推荐,因为限制太死,不过客观地说,这样代码可能会相对更美观); 第二,在Build(组建)->Setting(设置)->C/C+...+->Program Options(工程选项)中,将末尾的/c改成/Tp(注意大小写哈!

    1.9K20

    你知道Java中final和static修饰的变量是在什么时候赋值的吗?

    final修饰的实例变量 ---- 我们先分析一下这个问题: 深入Java虚拟机有一句是ConstantValue属性的作用是通知虚拟机自动为静态变量赋值,只有被static关键字修饰的变量才可以使用这项属性...我翻阅了《深入理解Java虚拟机》第二版,在第191页,确实有前面那句话 书中说的很清楚,ConstantValue属性的作用是通知虚拟机自动为静态变量赋值。...然后用javap -verbose命令反编译查看字节码: 我们可以看到,在字段表集合里面有四个字段表: 分表对应着a,b,c,d,e五个实例属性。...记住,这个方法会在实例初始化的时候被调用。 我们再来看一下putfield这个字节码指令的含义: 为指定的类的实例域赋值的,也就是为实例变量赋值的指令。...回到static修饰的变量(类变量),类变量有两种赋值方式可以选择: 使用ConstantValue属性赋值。 在类构造器方法中赋值。

    1.8K20

    怎么在Java 16中编写C风格的局部静态变量

    我们可以用它来模仿C风格的局部静态变量,即局部变量:只初始化一次(而且是懒惰地初始化)在一个方法的多个执行过程中共享这听起来是一个相当棘手的功能,即只在本地可见的全局变量。...我们能不能把P_CHECK 变量的范围只扩大到check() 方法?我们现在可以了!...最佳的输出:scss 代码解读复制代码compile(a)check(a): truecheck(b): false使用var 来使用一个不可取消的类型(其成员我们可以取消引用),再加上将静态成员放在内类中的能力...,有效地模拟了局部静态变量,就像在C语言中一样。...你仍然在创建一个额外的类和一个无用的对象,希望逃逸分析能阻止它的分配,所以这并不是一个非常干净的解决方案,但很高兴知道现在可以这样做了。

    8610

    C++核心准则ES.74:尽量在循环变量初始化表达式中定义循环变量​

    ES.74: Prefer to declare a loop variable in the initializer part of a for-statement ES.74:尽量在循环变量初始化表达式中定义循环变量...将循环变量的作用域限制在循环之内。避免在循环之后将循环变量用于其他目的。...still visible here and isn't needed See also: Don't use a variable for two unrelated purposes 参见:不用将变量用于两个不同的目的...如果发现一个变量在for语句外部定义,在循环内部被修改,同时没有在循环外没有被使用的情况,发出警告。...讨论:将循环变量的作用域限制在循环体之内非常有利于代码优化。需要认识到:只在循环体内部才是可访问的归纳变量是很多优化的必要条件:变量提升,强度削减,循环不变代码外提等。

    95410

    Swift解读专题一——Swift2.2语言预览

    三、常量与变量         常量和变量是编程语言中最基础的两类数据类型,常量可以理解为为某个值起一个特定的名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用的量值。...,示例如下: /*  if let 后面赋值为optional类型的值有这样的效果  如果optional的值不为nil 则会走if条件为真的语句块并且将optional变量的值赋值给let常量 可以在...在Swift中同样也有set和get方法,只是这里的set和get方法与Objective-C中的set和get方法有很大的不同,Objective-C中的get和set方法是截获了属性和存取过程,在其中加入额外的其他操作...Objective-C进行iOS开发时,经常会遇到这样的情况,某个控件中有一个UILabel控件,开发者在不想将控件暴漏在.h文件中的情况下经常会声明一个NSString类型的变量,重写此变量的set方法来完成对...C与Objective-C有很大的差别,在Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。

    2.1K20

    Objective-C属性(property)的特性(attribute)

    用Objective-C做过开发的朋友都知道,类里面的属性(可以近似地理解为类的变量)是用@property关键字定义的,然后@property后面的括号,会写上若干「特性(attribute)」,后面跟数据类型...在2006年的WWDC大会上,苹果发布了Objective-C 2.0,其中就包括Properties这个新的语法,把原来的实例变量定义成Properties(属性)。...(Swift有类似的「Computed Properties/计算属性」) 所以,在没有Objective-C2.0的@property之前,我们几乎需要为所有的实例变量,手动写getter和setter...Objective-C2.0之后: 庆幸的是,程序员都喜欢「偷懒」,所以就有了2006年Objective-C2.0中的新语法:Properties。...; 还需要手动声明实例变量(和Objective-C2.0之前一样) 然后在.m文件,还要用@synthesize自动合成getter和setter的实现。

    2K30

    Swift的属性,方法,下标脚本以及继承

    在Objective-C中,我们总是无法改动结构体的子属性,可是swift却能够,只是这样的情况是个例外,当你存储型属性是个结构体而且是个常量,那你就不要再试图去改动这个结构体的子属性了。...@lazy修饰的属性必须为变量,由于通经常量属性我们必须在构造完毕前赋值,基于这一特性,无法对常量进行懒载入。...事实上我们仅仅读计算型属性也能够省略掉get{} var area: Double {returnsize.width *size.height } 属性监视器 在Objective-C中,我们有...另外假设我们在没有实例时,比如在类方法中,使用了self,则self指向这个类型而不是实例。比如Objective-C中的[[self alloc] init]写法。...下标脚本(subscripts) 这个概念在Objective-C中并没有,我们说Swift语法比較灵活和强大,在于它对结构体,枚举,函数的强大功能进行了扩展和支持,比如函数在Swift中属于First-Class

    88410

    利用Clang探究__block的本质

    当我们在Objective-C层面调用block的时候,底层就可以通过调用block对应的C++结构体对象的函数指针来实现同等操作。...构造函数的第三个参数是__Block_byref_val_0类型的结构体变量val。 构造函数的第四个参数是flags,只是这里被赋值为570425344。...结论 __block底层将被修饰的外部变量x包装成了C++结构体。该结构体的实例x和外变量x同名,该实例包含一个结构体指针__forwarding和外部变量x。...除非显式的为auto变量赋值,否则它的值是不确定的。这也就是为什么上面在声明num的同时也对num进行了定义。...在一个文件内定义的全局变量,在另一个文件中,通过extern声明全局变量,就可以使用全局变量;static修饰的全局静态变量,作用域是声明此变量所在的文件。

    7.3K20

    Objective-c 知识总结 -- @property

    属性声明是一种声明变量为属性的语法。 属性的实现? 声明了实例变量或定义了相应的访问方法(存取方法)即为实现了属性。 Objective-C 2.0 属性的概念 ? OC 的属性概念 3....字符串 * * @note 关于特征字符串的格式在 《Objective-C Runtime Programming Guide》 Declared Properties 一节有描述...* @return C 字符串形式的实例变量的变量类型 * * @note 对于变量的可用类型查看《 Objective-C Runtime Programming Guide 》 Type...不过这么做编译器会报错,但是只要新建一个该类的类别,在类别.h文件中写上原始类该方法的声明,类别.m文件中什么也不写,就可以正常调用私有方法了。这就是传说中的私有方法前向引用。...Programming Guide》 《runtime之玩转成员变量》 《Objective-C Runtime 运行时之二:成员变量与属性》 《Swift 3.0 令人兴奋,但Objective-C

    1.4K31
    领券