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

在iOS上的Objective-C中,使用合成getter时"self.foo"和"foo"之间的(样式)区别是什么?

在iOS上的Objective-C中,使用合成getter时"self.foo"和"foo"之间的样式区别如下:

  1. self.foo:这种写法是通过对象的实例变量来访问属性。它会直接访问属性的实际值,而不会经过getter方法。这种方式适用于在属性的setter方法中,或者在需要直接访问属性的实际值时使用。
  2. foo:这种写法是通过属性的getter方法来访问属性。它会调用属性的getter方法,返回属性的值。这种方式适用于大多数情况下,通过属性的公开接口来访问属性。

使用合成getter时,通常推荐使用"self.foo"的方式来访问属性。这样可以确保直接访问属性的实际值,而不会受到可能存在的重写getter方法的影响。但在某些情况下,如果需要通过getter方法来获取属性的值,可以使用"foo"的方式。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:提供移动应用开发所需的基础设施和服务,包括移动应用托管、移动推送、移动分析等。详情请参考:https://cloud.tencent.com/product/mwp
  • 腾讯云数据库:提供多种数据库产品,包括关系型数据库、NoSQL数据库等,满足不同场景的需求。详情请参考:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器:提供弹性云服务器,可根据实际需求灵活调整配置,支持多种操作系统和应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能:提供多种人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。详情请参考:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

精选面试题教你应对高级iOS开发面试官(提供底层进阶规划蓝图)

编译没问题,运行时才执行相应方法,这就是所谓动态绑定。 @synthesize合成实例变量规则是什么?...同时重写了settergetter,系统就不会生成ivar,使用@synthesize foo =_foo;关联@property 与ivar 重写了只读属性getter 使用了@dynamic... @protocol定义所有属性 category定义所有属性 重载属性,当在子类重载了父类属性,必须使用@synthesize来手动合成ivar objc向一个nil对象发送消息将会发生什么...objc向一个对象发送消息[obj foo]objc_msgSend()函数之间有什么关系?...引用 调用free() objc类方法实例方法有什么本质区别联系?

52100

iOS理论基础(二)

@property 本质是什么?ivar、getter、setter 是如何生成并添加到这个类 @property 本质是什么?...@protocol category 如何使用 @property protocol 中使用 property 只会生成 setter getter 方法声明,我们使用属性目的,是希望遵守我协议对象能实现该属性...同时重写了 setter getter 重写了只读属性 getter 使用了 @dynamic @protocol 定义所有属性 category 定义所有属性 重载属性...当你子类重载了父类属性,你必须 使用@synthesize来手动合成ivar。...12.objc向一个对象发送消息[obj foo]objc_msgSend()函数之间有什么关系? [obj foo]该方法编译之后就是objc_msgSend()函数调用.

39610

面经之《招聘一个靠谱iOS》import CYLBlockExecutor.himport CYLBlockExecutor.himport CYLNSObject+RunAtDeallo

b非nil,ab指向同一个内存地址,b变nil,a变nil。此时向a发送消息不会崩溃:Objective-C向nil发送消息是安全。...参考链接:iOS 集合深复制与浅复制 @synthesize合成实例变量规则是什么?假如property名为foo,存在一个名为_foo实例变量,那么还会自动合成新变量么?...同时重写了 setter getter 重写了只读属性 getter 使用了 @dynamic @protocol 定义所有属性 category 定义所有属性...我们用 clang 分析下,clang 提供一个命令,可以将Objective-C源码改写成C++语言,借此可以研究下[obj foo]objc_msgSend()函数之间有什么关系。...objc类方法实例方法有什么本质区别联系?

983100

iOS_理解“属性”(property)这一概念

如:当A线程进行写操作,另一个线程突然闯入,把尚未修改好属性值读取出来,这时线程读到值就是不对。 因为iOS使用同步锁开销较大,会带来性能问题。...“属性定义”就相当于“类”“待设置属性值”之间达成契约。 注意:如果自己来实现时,应保证其具备属性所声明特质。...weakassign区别? ​ assign变量指向变量释放后不会置为nil,再使用会crash。而weak会置为nil。 weakstrong区别? ​...但是block创建时候时分配在栈,作用域属于创建作用域,因为栈区特点就是创建对象在出了作用域后随时可能被销毁,一旦销毁,后续再使用就会crash。...即:[weakSelf someMethod][strongSelf someMethod]区别,其实一条已经说明了(但是当那个面试官突然这么问,我脑子没转过来>_<)。

56320

重回iOS应用开发

,很微妙感觉;比方我现在是架构师位置,但在iOS技能上,却没有充当架构师能力,如何平衡现实期望,着实让人纠结一种状态,重新捡起来,以稍微高一些视角去定位,还是比之前有了更多收获 ,尽管由于项目人力配备不齐...iOS原生技术,其实选择Objective-C还是Swift来作为开发语言,确实是拿不准,毕竟苹果官方教程主推还是Swift,但通过同iOS开发多年经验同学交流后发现,使用Objective-C作为开发语言项目...重新熟悉ObjectC语法过程,有几个点之前关注不多,记录下: 一、Protocol可以用@property形式声明属性,只不过Protocol声明属性,只有对应setter/getter...3.内存管理:@synthesize ARC 无关。 4.使用:一般情况下无需对属性添加 @synthesize ,但一些特殊情形仍然需要,例如protocol声明属性。...这些组件框架主要出发点是面对大型应用项目开发,项目组成员更好进行协作开发,能遵循固定代码框架,实现高质量输出。

42820

iOS @property探究(一): 基础详解你要知道@property都在这里

或者,你也可以使用Xcodemodern Objective-C转换器来自动转换你代码。参考Refactoring Your Code Using Xcode。...为了方便使用Objective-C允许使用点语法来访问gettersetter。...当有很多变量需要设置,这样手工创建settergetter方式难免很繁琐,因此合成存取方法就诞生了。...atomic/nonatomic 指定合成存取方法是否为原子操作,可以理解为是否线程安全,但在iOS即时使用atomic也不一定是线程安全,要保证线程安全需要使用锁机制,超过本文讲解范围,可以自行查阅...Foundation框架很多数据类型已经帮我们实现了上述两个方法,因此我们可以使用copy方法mutableCopy方法来复制一个对象,两者区别在于copy返回值仍未不可变对象,mutableCopy

1.6K90

Objective-c 知识总结 -- @property

如果是 readonly 属性声明,只可以有读取方法(getter),所以你手动实现了它 getter 方法,其实 readwrite 情况下手动实现 setter getter 情况是一样一样...原子性操作类关键字解析 atomic 原子性,存取方法均加锁保护,保证原子性; 线程安全,但低效,MRC 、ARC 环境下均可用; setter、getter 方法:【copy 关键字作为例子,就是原来基础加锁...,null_unspecified Xcode 8 开始使用,并能写进 @property 选项列表; Ep【 Xcode 7, iOS 9】: #import "ViewController.h"...Runtime 实现 核心内容 : ?...不过这么做编译器会报错,但是只要新建一个该类类别,类别.h文件写上原始类该方法声明,类别.m文件什么也不写,就可以正常调用私有方法了。这就是传说中私有方法前向引用。

1.3K31

2.24

进程是什么?二者有什么区别联系? 一个程序运行,至少有一个进程,一个进程内,至少有一个线程。 进程: 一个程序一个运行,执行过程拥有独立内存单元,而多个线程共享这个内存单元。...系统开销: 创建和撤销进程,系统都要为之分配回收资源,导致系统开销,明显大于创建和撤销线程开销。 4、谈谈你对多线程理解?iOS中有几种实现多线程方法?...一些需要等待任务,线程就比较有优势。比如:用户输入,文字读写,网络加载等。 缺点: 如果有大量线程,可能会影响性能,因为系统需要在它们之间切换。 更多线程就需要有更多内存空间。...实现多线程方法: NSThread NSOperation GCD NSObject类方法 5、线程同步异步区别iOS如何实现多线程同步?...请简述其过程 �Objective-C语言中不支持多继承,但是可以用类目protocol方法来实现扩展原有类方法 9、栈区别 堆区内存需要程序员手动释放 而栈区内存是系统自动释放 10

45730

ReactJS到React-Native,架构原理概述

除此之外,它还讲解了许多关于样式交互知识。平台特定元素API 官方文档中有特殊标签,通常使用平台名称作为后缀,例如 。...为了给React-Native组件加上样式,你需要在JavaScript添加样式表。React 宿主平台之间桥接包含了一个缩减版CSS 子集实现。...相对于样式表来说,使用样式对象可能需要一些思维调整,从而改变你编写样式方法。然而,React Native ,这是一个实用转变。...非常规平台上API 会更有趣,例如,React Native 虚拟现实头盔之间API 会是什么呢?...JS调用OC代码调用 Objective-C 代码,JavaScript 会解析出方法 ModuleId、MethodId Arguments 并放入到 MessageQueue ,等待 Objective-C

5.3K10

ReactJS到React-Native,架构原理概述

除此之外,它还讲解了许多关于样式交互知识。平台特定元素API 官方文档中有特殊标签,通常使用平台名称作为后缀,例如 。...为了给React-Native组件加上样式,你需要在JavaScript添加样式表。React 宿主平台之间桥接包含了一个缩减版CSS 子集实现。...相对于样式表来说,使用样式对象可能需要一些思维调整,从而改变你编写样式方法。然而,React Native ,这是一个实用转变。...非常规平台上API 会更有趣,例如,React Native 虚拟现实头盔之间API 会是什么呢?...JS调用OC代码调用 Objective-C 代码,JavaScript 会解析出方法 ModuleId、MethodId Arguments 并放入到 MessageQueue ,等待 Objective-C

5.6K10

OC - 属性关键字所有权修饰符

这些关键字可以用于属性、方法返回值参数,来指定对象可空性,这样编写代码时候就会智能提示。 Swift 可以使用!?...这样就会造成一个问题: Swift 与 Objective-C 混编,Swift 编译器并不知道一个 Objective-C 对象到底是optional还是non-optional,因此这种情况下编译器会隐式地将...引入nullability annotations一方面为了让 iOS 程序员平滑地从 Objective-C 过渡到 Swift,另一方面也促使开发者在编写 Objective-C 代码更加规范,减少同事之间沟通成本...__autoreleasing MRC 我们可以给对象发生 autorelease 消息来将它注册到 autoreleasepool ,而在 ARC 我们可以使用 __autoreleasing...1.ARC 为了避免循环引用而使用,可以让相互引用对象一个使用weak/__weak弱引用修饰,常用于对delegateblock修饰; 2.Interface Builder IBOutlet

1.3K31

Python中下划线5种含义

如果你想知道“Python变量方法名称单下划线双下划线含义是什么?”,我会尽我所能在这里为你解答。...单前导下划线 _var 当涉及到变量方法名称,单个下划线前缀有一个约定俗成含义。 它是对程序员一个提示 - 意味着Python社区一致认为它应该是什么意思,但程序行为不受影响。...Python不像Java那样“私有”“公共”变量之间有很强区别。 这就像有人提出了一个小小下划线警告标志,说: “嘿,这不是真的要成为类公共接口一部分。不去管它就好。..._bar = 23 如果你实例化此类,并尝试访问__init__构造函数定义foo_bar属性,会发生什么情况?...让我们来看看这个列表,并寻找我们原始变量名称foo,_bar__baz - 我保证你会注意到一些有趣变化。 self.foo变量属性列表显示为未修改为foo。 self.

1.5K70

Python下划线5种含义代码实例解析

单前导下划线:_var 当涉及到变量方法名称,单个下划线前缀有一个约定俗成含义。 它是对程序员一个提示 – 意味着Python社区一致认为它应该是什么意思,但程序行为不受影响。...Python不像Java那样“私有”“公共”变量之间有很强区别。 这就像有人提出了一个小小下划线警告标志,说: “嘿,这不是真的要成为类公共接口一部分。不去管它就好。...让我们来看看这个列表,并寻找我们原始变量名称foo,_bar__baz – 我保证你会注意到一些有趣变化。 self.foo变量属性列表显示为未修改为foo。 self....__baz = 'overridden' 现在,你认为foo,_bar__baz值会出现在这个ExtendedTest类实例吗?...最好避免自己程序中使用以双下划线(“dunders”)开头结尾名称,以避免与将来Python语言变化产生冲突。

67920

oc深坑測试题及其答案

答案:(A) A、nonatomic:提供多线程保护,提高性能,没有使用多线程编程能够选择使用。...B、Objective-C一个完整类分为interfaceimplementation两块 C、Objective-C对象使用new分配内存,用delete释放 D、Objective-C协议分为非正式协议和正式协议...42、 简单类型成员比方:int类型成员使用@property(),括号里应使用: 答案:(A) A、assign B、copy C、retain D、auto...B、在要求确认协议类必须实现协议方法,能够使用@required。 C、一个协议能够被多个类确认。 D、协议声明方法。默认是@optional。...答案:(D) A、没有getter方法,当对calvalue赋值,将产生一个NSString副本。 B、此属性可保证多线程安全。 C、此属性合成能够生成设置器方法。

41530

iOS快速入门

---- 2017年国庆后lucio开始由Android开发转做iOS开发了,在这之前lucio可是什么苹果产品都没用过小白,这里po一下小白iOS开发学习历程,包括看书、视频、文章,看看lucio...推荐使用代码提示宏定义NS_ENUM()枚举模块来创建,它可以提供更严谨类型检测代码补完功能。 私有变更应该在类私有类别,不需要加private等词语来进行修饰。...私有类别可以命名为+Private.h文件里提供。 init方法返回值使用instancetype取代id作为返回。[原因] 单例必须线程安全。...属性(特别是View)初始化放在getterinitView里面只addSubview。 // 2....Toast Toast MBProgressHUD 半透明提示框 DateTools 用于提高Objective-C中日期时间相关操作效率 DateTools使用「日期工具库」 更多: iOS开发常用三方库

60520

iOS - 老生常谈内存管理(三):ARC 面世

Objective-C 语言本身是支持 GC 机制,但有平台局限性,仅限于 MacOS 开发iOS 开发用是 RC 机制。...管理 Outlets 模式 iOS OS X 平台下变得一致 ARC下,iOSOS X平台中声明outlets模式变得一致。...MRC下,我们可以直接在Objective-C指针类型idC指针类型void *之间进行强制转换,如Foundation对象Core Foundation对象进行转换。...,将 CGColorRef(又称 struct CGColor *)作为 id 类型参数传入 使用桥接转换函数参数 当在函数调用Objective-CCore Foundation对象之间进行转换...你甚至可以容器中放置strong/weakid对象。ARC编译器会在复制构造函数析构函数等合成retain/release逻辑以使其运行。 Q: 哪些类不支持 weak 弱引用?

2K10

Python成员

print self.foo # 派生类访问 obj = C() obj....类其他成员 这里其他成员主要就是类方法: 方法包括:普通方法、静态方法类方法,三种方法在内存中都归属于类,区别在于调用方式不同。...静态方法 定义:使用装饰器@staticmethod。参数随意,没有“self”“cls”参数,但是方法体不能使用类或 实例任何属性方法; 调用:实例对象类对象都可以调用。...因为我实例化是学生,但是如果我从学生这一个实例 获得班级总人数,逻辑显然是不合理。同时,如果想要获得班级总人数,如果生成一个班级 实例也是没有必要。...静态方法是类函数,不需要实例。静态方法主要是用来存放逻辑性代码,逻辑上属于类,但是 类本身没有关系,也就是说静态方法,不会涉及到类属性方法操作。

96940

面向对象 类成员

): print self.foo # 派生类访问 obj = C() obj....静态方法 ​ 定义:使用装饰器@staticmethod。参数随意,没有“self”“cls”参数,但是方法体不能使用类或实例任何属性方法; ​ 调用:实例对象类对象都可以调用。...3.1 类方法 使用装饰器@classmethod。 原则,类方法是将类本身作为对象进行操作方法。假设有个方法,且这个方法逻辑采用类本身作为对象来调用更合理,那么这个方法就可以定义为类方法。...因为我实例化是学生,但是如果我从学生这一个实例获得班级总人数,逻辑显然是不合理。同时,如果想要获得班级总人数,如果生成一个班级实例也是没有必要。...静态方法是类函数,不需要实例。静态方法主要是用来存放逻辑性代码,逻辑上属于类,但是类本身没有关系,也就是说静态方法,不会涉及到类属性方法操作。

83720

Whats New in LLVM 9

除了有关 LLVM 9.0 新特性之外,还有关于静态分析器 Clang 5 Objective-C ARC 一点看法经验。...我觉得 LLVM 9 亮点如下: 支持 Objective-C API 可用性检查 新增一些对隐患代码静态分析检查 warning 更快 LTO,使其可以真正使用 API Availability...Checking for Objective-C 低版本系统上调用高版本 SDK API 会引发 crash,所以兼容多版本系统需要谨慎判断系统版本,然后使用对应 API。...Objective-C 假设加入 App 支持最低版本是 iOS 10,但是直接调用了 iOS 11 API,那么编译器会告警,提醒开发者某个 API 只能用于较新版本系统。...以上,而 foo 方法内部实现调用 iOS 11 API 无需再用 [@available](https://github.com/available "@available" ) 检查。

2.4K100
领券