首页
学习
活动
专区
工具
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方法,而->符号是直接访问变量。 专注技术,热爱生活,交流技术,也做朋友。

54720

javafinal变量赋值的几种方式

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

2.4K10

Objective-C浅谈面向对象

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

1K60

【小家java】javafinal变量赋值的几种方式

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

2.7K40

属性“__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.3K20

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

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

21K11

.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.8K20

你知道Javafinal和static修饰的变量什么时候赋值的吗?

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

1.7K20

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

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

7710

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语句外部定义,循环内部被修改,同时没有循环外没有被使用的情况,发出警告。...讨论:将循环变量的作用域限制循环体之内非常有利于代码优化。需要认识到:只循环体内部才是可访问的归纳变量是很多优化的必要条件:变量提升,强度削减,循环不变代码外提等。

94510

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方法来完成对...CObjective-C有很大的差别,Swift,枚举也被作为一种数据类型来处理,其中可以添加函数方法。

2K20

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的实现。

1.9K30

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

86410

利用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.3K31

窥探Swift之别具一格的Struct和Class

除了上述方法给结构体变量的属性赋值外,我们还可以通过构造函数给其属性赋值。也就是在给变量分配内存空间时其指定初始值,这一点就和类的构造函数即为相似了。...关于Objc的Class, 请参考我之前发表的一篇博客《Objective-C浅谈面向对象》, 其中浅谈了Objective-C面向对象的东西。...2.对象的赋值与比较     Swift也是允许把一个类的变量的值通过赋值运算符(=)来赋值给另一个变量的。不过有一点要搞明白,如果类变量a的值赋值被类变量b,那么变量a和b就指向同一块内存区域。...MyCycle类的MyPoint属性懒加载属性,具体请看代码,如下所示:       (1) 定义MyCycle类,MyCycle类,定义一个属性lazy的MyPoint类变量。...计算属性(Count Property)     计算属性这一个特性Objective-C也是没有的。

99770
领券