首先,让我谈谈property 。 假设如果我们需要使用您的类的对象来更改或访问您的类中的iVar,则应该为该iVar分配getter和setter方法。 主要在其他对象需要更改或访问对象中的ivars时使用属性,而无需手动定义getter和setter或使用@property(在目标– c中)。 在Objective-c中, @property property在类标头中声明一个属性。 这是一个例子: @property (nonatomic, retain) NSString *myString; @synthesize为属性(访问器方法)创建setter和getter。 如果不进行synthesize ,则必须编写自己的setter和getter实现,例如getMyString或setMyString(将属性的第一个字符大写)。 因此,以上属性声明等效于: – (NSString*)myString {} – (void)setMyString:(NSString*)newValue {} 属性可以进一步分为存储属性和计算属性 。 存储属性与计算属性 存储的属性将常量和变量值存储为实例的一部分,而计算的属性将计算(而不是存储)值。 ►计算的属性由 类 , 结构 和 枚举提供 。 ►存储的属性仅由 类 和 结构提供 。 最简单的形式是,存储的属性是作为特定类或结构的实例的一部分存储的常量或变量。 存储属性可以是变量存储属性 (由var关键字引入)或常量存储属性 (由let关键字引入)。 下面的示例定义了一个称为FixedLengthRange的结构,该结构描述了一个整数范围,该整数范围的长度一旦创建便无法更改: struct FixedLengthRange { var firstValue: Int let length: Int } […]
在初学者级别,所有开发人员都对属性有一些疑问,例如什么是属性?什么类型的属性? ,什么时候使用哪种类型? 。 所以在这里我想快速给出一些有关属性的想法。 有什么属性? “简单来说,属性具有一些您想在应用程序或班级中出于任何原因访问的值” 例如 :- var intVal = 2; var strVal =“世界你好” 因此,在这些示例中,“ intVal”和“ strVal”是具有某些值的属性。 但是现在的问题是,财产是否总是具有某些价值? 没有任何动态价值? 答案是“是的,它可以具有运行时间(动态值)”。 所以现在属性类型出现了。 它有两种类型: 1)储物 2)计算财产 它以常量和可变值作为实例。 例如 1)变量a = 5 在这里,变量“ a”存储整数值5。我们使用var关键字定义了变量“ a”,这意味着其值b可以更改。 print(a)// 5 a = 7 //更新a的值 print(a)// 7 2)让a = 5 它的工作原理同上,但不同之处在于它的值无法更改。 a = 7 //编译器抛出错误 3)var a:整数! 这里我们没有给变量a赋值。 因此,Int的默认值会自动分配给变量a。 因此,当您不需要通过任何计算获得任何动态值时,可以使用var或let来使用存储的属性。 在开发过程中,某些情况下,由于计算能力有限或其他原因,您只想在需要时才创建一些对象。 […]
我在编码时曾遇到多次使用全局变量和局部变量的问题,所以我想写一篇关于它们是什么以及如何使用它们的初学者版的文章。 我假设本文的读者不了解其中的区别,并且在从事项目工作时不了解范围,因此我将首先解决该问题。 听起来,局部变量在项目的较小范围内起作用。 通常作为类实例或方法。 从技术上讲,范围在某些方面类似于同心圆: 如上所示,最里面的圈子有自己的范围或范围,并且在某些方面处于其他关联圈子的层次结构中。 范围也是如此。 一个本地范围可以在另一范围内,依此类推。 但是,回到局部变量。 局部变量通常是在程序范围内声明的变量,通常被视为类或方法内的子集。 另一方面,全局变量在整个项目中都有范围。 使用全局变量,您可以获取该变量的值并在完全不同的类中使用它。 这是关于全局声明的最甜蜜的部分。 它允许您进入同心圆的最内部,取走其中的任何东西,并在其范围之外使用它。 现在我们已经清除了那部分,让我们谈谈这有什么帮助。 好吧,可以说您正在运行一个异步方法或该方法中的任何方法。 可以这样说: class NameArray:UIViewController {let array = [[James,Mike,Ben,Lisa,Anna],[James,Mike,Ben,Lisa,Anna],[James,Mike,Ben,Lisa,Anna],[James,Mike, Ben,Lisa和Anna]] let nameArray = [String]() ///(这是类中的局部变量)////用于数组{let nameArrayForTBView = subarray [0] .name ///(这是for循环方法中的局部变量)//// nameArray.append(nameArrayForTBView) ///(nameArray是我所讨论的层次结构的一部分)/// }} 在上面的代码中,数组中包含数组,并且这些数组中包含字符串列表。 然后,您将获得一个for循环,该循环遍历数组并获取每个数组的第一项,因此索引为[0]。 这些第一项被附加到for循环外的变量中,而for循环外的变量位于类内(同心圆,范围)。 现在,我们有了一个充满名称的nameArray,它位于for循环之外。 现在说我们要把那些名字放在一个完全不同的文件中吗? 假设您想将其用作tableView计数。 现在您有两个选择: 选择1:让您的课程具有全球性 class NameArray:UIViewController { ///全局类(单例)/// 静态let shared = NameArray() let […]
变量表示信息性名称,该名称存储任何数据类型的值。 数据类型是指变量保存的数据类型,并且可以对其应用数学,关系或逻辑运算的类型而不会引起错误。 例如,字符串是用于对文本进行分类的数据类型,而整数是用于对整数进行分类的数据类型。 让我们看看在目标C语言中使用的主要数据类型。 1. int保持数字值不带小数 整数数量= 10; 此处int =数据类型,数量=变量,10 =变量值 NSLog(@“ quantity =%d”,quantity); //使用带有%d的NSLog打印int值 输出:数量= 10 2.浮点数保存带有十进制的数字值 浮动pi = 3.14; 此处float =数据类型,pi =变量,10 =变量值 NSLog(@“ pi的值=%f”,pi); //使用带%f的NSLog打印浮点值 输出:pi的值= 3.14 3. Char保留单个字符值 char a =’A’; 这里char =数据类型,a =变量,A =变量值 NSLog(@” a的值=%c”,a); //使用带有%c的NSLog打印浮点值 输出:a = A的值 4.字符串也包含单个字符和文本。 NSString * strName = @“ Verma Mukesh”; 此处String =数据类型,strName […]